我现在要用VC++实现一个解析xml的程序,xml及其.dtd文件已经写好,并且下载了一个微软的xmlsdk 并安装了,安装后的msxml3.dll的路径为 C:\WINNT\system32\msxml3.dll,但是我看大家用的是msxml3.0或msxml4.0,不知道我装的软件对不对???另外,倒入库的语句是不是#import "msxml3.dll" 还是 #import "C:\WINNT\system32\msxml3.dll"?????????
希望高手指点,等待中......

解决方案 »

  1.   

    我不是高手,但写过几个xml的程序,是#import "msxml3.dll",msxml4.0是最新版,与asp的互动性很好。。
      

  2.   

    http://www.vchelp.net/vchelp/type.asp?type_id=76&class_id=1
      

  3.   

    #import "msxml3.dll"
    using namespace MSXML2;
      

  4.   

    楼上正确,如果要解析xml,最好使用SAX方式,速度快,消耗内存小。
      

  5.   

    实例代码:
    link 里面添加:msxml2.lib#include "msxml2.h"try
    {
    HRESULT hr;
    IXMLDOMDocument* pXMLDoc;
    IXMLDOMNode* pXDN;

    //COM的初始化 
    hr=CoInitialize(NULL);
        
    //得到关于IXMLDOMDocument接口的指针pXMLDOC
    hr=CoCreateInstance(CLSID_DOMDocument,NULL,CLSCTX_INPROC_SERVER,
     IID_IXMLDOMDocument,(void**) &pXMLDoc); 
        
    //将XML字符串转换成UNICODE,然后加载
    VARIANT_BOOL bSuccess = false;
    pXMLDoc->loadXML(L"<?xml version=\"1.0\" encoding=\"GB2312\"?><root><file><time>2003-10-13</time><content>内容</content><title>标题</title></file></root>",&bSuccess);

    //得到已加载的XML字符串,并显示
    LPWCH tempxml;

    //因为此处是输出参数[out][retval],所以不用new一段空间
    pXMLDoc->get_xml(&tempxml);
    MessageBoxW(NULL,tempxml,L"XML正文",MB_OK);

    //取到<time>,<title>以及<content>节点,并显示结点内容
    pXMLDoc->selectSingleNode(L"//time",(IXMLDOMNode **)&pXDN);
    pXDN->get_text(&tempxml);
    MessageBoxW(NULL,tempxml,L"time值",MB_OK);
    pXMLDoc->selectSingleNode(L"//title",(IXMLDOMNode **)&pXDN);
    pXDN->get_text(&tempxml);
    MessageBoxW(NULL,tempxml,L"title值",MB_OK);
    pXMLDoc->selectSingleNode(L"//content",(IXMLDOMNode **)&pXDN);
    pXDN->get_text(&tempxml);
    MessageBoxW(NULL,tempxml,L"content值",MB_OK); //释放分配的资源

    CoUninitialize();
    }
    catch(...)
    {
    AfxMessageBox("错误!");
    }
      

  6.   

    #import "msxml3.dll" named_guid, raw_interfaces_only
    using namespace MSXML2;这样使用的都是以raw开头接口函数
      

  7.   

    总体感觉msxml罗里罗唆的,现在在做一个基于expat的warp,基于WTL和STL的数据类型,使用msxml的sax和dom的接口,希望能够替代msxml
      

  8.   

    CMarkup,很好用,我常用的,不是基于msxml,只用到MFC的CString和几个数组类,现在是7.1版本了,google里面搜"CMarkup"可以找到,可惜的是free版本没有UTF_8转换,但你可以用WideCharToMultiByte和MultiByteToWideChar自己转换。如果觉得编码转换麻烦,在google里面搜CTextFileDocument,这个类可以帮你完成多种编码转换,而且是Free的。我最近编的程序在XML方面都是用这两个类,它们的代码都是公开的。
      

  9.   

    yliang(liangyi)的意见很有价值!
    我上到CMarkup的网站,他们的东西是收费的呀!你用的什么版本?他们最新的是7.1.
    http://www.firstobject.com/xml.htm
      

  10.   

    推荐使用CMarkup,好学,容易上手
      

  11.   

    http://dev.csdn.net/develop/article/24/24497.shtm 
    这篇文章写得很好。
    楼主好好看看,就搞定了