用MSXML解析XML

330 篇文章 ¥19.90 ¥99.00
本文详细介绍了如何在.NET环境中利用MSXML库进行XML文件的解析操作,包括异常处理、空值处理和用户交互等关键步骤,帮助开发者更好地理解和应用XML解析技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用MSXML解析XML

引自:http://blog.youkuaiyun.com/feiyuo3000/archive/2005/05/26/381067.aspx
做大作业的时候想把一些东西写到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索引项.

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值