MSXML解析XML的一个例子

xml例子如下:

<?xml version="1.0"?>
<catalog>
  <book id="bk001">
    <author>Eddy</author>
    <title>XML Developer's Guide</title>
    <price>16.18</price>
  </book>
  <book id="bk002">
    <author>Rain</author>
    <title>Midnight Rain</title>
    <price>12.95</price>
  </book>
  <book id="bk003">
    <author>Sunny</author>
    <title>Maeve Ascendant</title>
    <price>60</price>
  </book>
</catalog>

工程首先加入msxml.tlh和msxml.tli。

然后:

#include "msxml.tlh"

新建了一个MFC简单对话框工程,代码如下:

void CtestXMLDlg::OnBnClickedOk()
{
	//首先初始化COM   
	HRESULT hr;  
	hr = CoInitialize(NULL);   
	if( hr != S_OK )  
	{  
		return;  
	}  
	//创建Document对象   
	MSXML::IXMLDOMDocumentPtr pDoc;  
	hr = pDoc.CreateInstance(__uuidof(MSXML::DOMDocument)); 
	if( FAILED(hr) )  
	{  
		return;  
	}  
	if( FALSE == pDoc->load(_bstr_t("D:\\Book.xml")) )  
	{
		return; 
	}		 	
	//选择内容的根节点   
	MSXML::IXMLDOMElementPtr pElem = NULL;  
	pElem = pDoc->selectSingleNode("catalog");  
	if(pElem==NULL)  
	{
		return;
	}
	unsigned int nBookNum = pElem->childNodes->length;  
	if( nBookNum == 0)  
	{
		return;
	}

	for(int i=0; i < nBookNum; i++)  
	{  
		MSXML::IXMLDOMNodePtr pBookNode = pElem->childNodes->item[i];  
		if(pBookNode==NULL)  
		{
			return;
		}
		//读取book节点的id属性   
		MSXML::IXMLDOMNodePtr pId = pBookNode->attributes->getNamedItem("id");
		//读取book节点下author子节点   
		MSXML::IXMLDOMNodePtr pAuthorNode = pBookNode->selectSingleNode("author");  
		if(pAuthorNode==NULL)  
		{  
			;
		}  
		else  
		{  
			; 
		}   
	}  	
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值