IXMLDOMElement的成员函数insertBefore,第二个参数是应该是控制插入位置的。
为_variant_t 类型的请问其怎么用?我给其符值,运行时出错。
使用默认构造函数,总是在子接点后插入,大虾请帮我。//************************************************
//前有定义
......................................
_variant_t kk;
childNode->insertBefore(childNode2,&kk); 
//************************************************
怎么使用kk

解决方案 »

  1.   

    什么样的字符值?BSTR和OLESTR是有区别的
    http://blog.joycode.com/jiangsheng/posts/17104.aspx
      

  2.   

    谢谢楼上这位大虾。字符值为BSTR
      

  3.   

    childNode的其它操作是否有问题?例如取XML
      

  4.   

    没有,就是写到_variant_t kk;
    childNode->insertBefore(childNode2,&kk);   也没问题。不过插在是childNode的最后一个
    子接点后边了。我想应该是可以通过kk来改变插入位置的。给kk符值后出错。我主要想问怎么使用_variant_t,选择插入位置?????
      

  5.   

    kk should be a variant containing a VT_DISPATCH value, which is the IDispatch Interface pointer of an existing child
      

  6.   

    请楼上的大虾说的具体点,我采用如下方法,想在fatherNode的第一个子接点前插入childNode2。
            
          MSXML2::IXMLDOMElementPtr childNode;
          MSXML2::IXMLDOMElementPtr childNode2;  
             //分配childNode2,并附值。
             //通过IXMLDOMDocument获得childNode。
             //...................................
             //以上我测试过,没错。
              
             childNode0=(fatherNode->childNodes ->item [0]);
    long gg=(long)&(*childNode0);
    _variant_t kk=(_variant_t)gg;
    fatherNode->insertBefore(childNode2,kk);  //运行出错!!!!! 
         
    分步写为了调试方便。
    但是,运行时出错,大虾们请教我谢谢jiangsheng(蒋晟.MSMVP2004Jan) !!!
      

  7.   

    刚才敲错了,不好意思MSXML2::IXMLDOMElementPtr fatherNode;
          MSXML2::IXMLDOMElementPtr childNode2;  
             //分配childNode2,并附值。
             //通过IXMLDOMDocument获得fatherNode。
             //...................................
             //以上我测试过,没错。
              
             childNode0=(fatherNode->childNodes ->item [0]);
    long gg=(long)&(*childNode0);
    _variant_t kk=(_variant_t)gg;
    fatherNode->insertBefore(childNode2,kk);  //运行出错!!!!! 
      

  8.   

    why did u convert a IDispatch pointer to a variantof VT_LONG?fatherNode->insertBefore(childNode2,(IDispatch*)childNode0);
      

  9.   

    谢谢大斑竹: jiangsheng(蒋晟.MSMVP2004Jan)我知道了,光用c++了,一直把指针当成long来用。com这东西前一阵才刚开始用,理解的不透。问题是解决了。我要在看看com。