<root>
<A>
   <B value="10">
      <C value="1"></C>
      <C value="2"></C>
   </B>
   <B value="11">
       <C vaule="6"></C>
       <C value="7"></C>
   </B>
</A>
</root>请问如何用MSXML解读上面的文件,把B和C节点的value的值都读出来,请给出SDK程序。三天内给分,正确解答者都有分。

解决方案 »

  1.   

    可以用IXMLDocument接口来解析这各文件吧?和IHTMLDocument2接口的用法很相似
      

  2.   

    我正是使用的IXMLDocument接口,可是VALUE的值取不到,不知为什么。这方面的资料又很少,网上的就那么几篇,内容都一样,没有帮助。
      

  3.   

    download MSXML4.0 SDK at www.microsoft.com/xml
    lots of samples
      

  4.   

    spNodes->get_length(&length);
    for (long i = 0; i < length; ++i) {
    CComPtr<IXMLDOMNode> spNode;
    CComQIPtr<IXMLDOMElement> spVoice;
    spNodes->get_item(i, &spNode);
                      spVoice = spNode;
    if (spVoice) {
    CComBSTR data;
    CComVariant val;
    spVoice->getAttribute(attrRef, &val);
                      }
              }
          spVoice->getAttribute(attrRef, &val);
      

  5.   

    谢谢,能就这个例子给出更完整的源码吗?我是刚接触MSXML,但是要急着用,所以请赐教!
      

  6.   

    用下面的代码或者用直接指定XPATH,TAG A ,B 可以用SelectSingleNode()完成。详细的你可以查IXMLDOMDocument的方法。
             const CComBSTR attrRef(_T("value"));
             long length;
             spNodes->get_length(&length);
    for (long i = 0; i < length; ++i) {
    CComPtr<IXMLDOMNode> spNode;
    CComQIPtr<IXMLDOMElement> spVoice;
    spNodes->get_item(i, &spNode);
                      spVoice = spNode;
    if (spVoice) {
    CComBSTR data;
    CComVariant val;
                               spVoice->getAttribute(attrRef, &val);
                      }
              }
      

  7.   

    http://www.csdn.net/develop/read_article.asp?id=3969
      

  8.   

    上面的这篇文章我早就看过,不过帮助不大。谢谢各位,这个问题我已经解决了。主要原因出在我没有正确的转换数据格式,其实用_variant_t类型的数据比较合适,显示时用_bstr_t再进行转换就行了。否则显示出来总是1。祝各位中秋节快乐!
    送分了!!!