用MSXML解析XML

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

2005年5月26日 星期四 08时14分 晴

用MSXML解析XML

做大作业的时候想把一些东西写到xml中,读取的时候比较方便.

由于本程序在VC6中运行,所以有xml有很多高级功能无法使用,但基本操作还是可以的,

这个方法是用MSXML解析文件,速度并不快,在我的机器(CE1.1+256)已经能感觉到有些延迟,

如果真的读取几千行的话,恐怕连运行都会出现问题,采取.net平台会好些,可以用writexml的方法访问,

毕竟是人家提出的标准么,反正VC6别想用那个该死的类库了.呵呵.

网上有第三方插件可以提高访问xml的访问效率,有机会做一下研究.

下面的方法比较老,但可以实现基本功能.

1)写一个XML文件user.xml

<root>

<user id="101">

<name>abc</name>

<password>abc</password>

</user>

<user id="102">

<name>ccc</name>

<password>ccc</password>

</user>

</root>

2)需要引入几个头文件:

#include "msxml.h"

#include "atlbase.h"

#import "msxml.dll"

如果需要最新版的话,可以引入msxml2

#import "msxml3.dll"

using namespace msxml2;

引用namespace后可以不用加前缀

3)随便建一个对话框加入下面代码:

try{ //读取xml代码需要放在try块,因为建立com可能会产生exception

CoInitialize(NULL);//初始化com组件,

MSXML::IXMLDOMDocumentPtr pDoc;

HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML::DOMDocument));//创建一个com进程

if(!SUCCEEDED(hr))

{

AfxMessageBox("failure");

}

pDoc->load("user.xml");

MSXML::IXMLDOMNodeListPtr pNodeList = NULL;

pNodeList = pDoc->selectNodes("root/user");

MSXML::IXMLDOMNodePtr pSubNode;

CString strTemp;

for(int i=0;i<pNodeList->Getlength();i++)

{

pSubNode=pNodeList->nextNode()->selectSingleNode("name");

_bstr_t strRequestType=pSubNode->Gettext();

strTemp=strRequestType.operator char *();

AfxMessageBox(strTemp);

}

}catch(...)

{

AfxMessageBox(_T("Exception occurred"));

}

4)其他请操作请参考MSDN msxml索引项.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航