我现在要用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"?????????
希望高手指点,等待中......
希望高手指点,等待中......
using namespace MSXML2;
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("错误!");
}
using namespace MSXML2;这样使用的都是以raw开头接口函数
我上到CMarkup的网站,他们的东西是收费的呀!你用的什么版本?他们最新的是7.1.
http://www.firstobject.com/xml.htm
这篇文章写得很好。
楼主好好看看,就搞定了