tinyxml 解析XML字符串,可加载远程XML

本文介绍了如何利用tinyxml这个轻量级的XML解析器,进行跨平台的XML字符串解析,包括从远程HTTP获取XML数据并进行解析。同时提到了另一个C++解析器CMarkup,它同样支持解析远程XML。

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

tinyxml 轻量级XML解析器,跨平台,很不错的解析器!

1:先获取远程的XML,请求远程HTTP

 

 CString m_data;
 CString m_result;
 m_http.PostContent("http://www.xxxx.com/ref.php","",m_data,m_result);
 ReadXmlFile(m_data); 


2:使用tinyXML进行解析

bool CTESTDlg::ReadXmlFile(CString& szFileName)
{//读取Xml文件,并遍历
	try
	{
		//--获取程序路径的目录-------------
		//CString appPath=GetAppPath();;		
		//CString seperator = "\\";
		//CString fullPath = appPath.GetBuffer(0) +seperator+szFileName;

		//创建一个XML的文档对象。
		TiXmlDocument *myDocument = new TiXmlDocument();
        
		//-------------读取字符串-----------
		myDocument->Parse(szFileName);

		//-------------读取文件-----------
		//myDocument->LoadFile(szFileName);
       
		//获得根元素。
		TiXmlElement *RootElement = myDocument->RootElement();
		//输出根元素名称。
	//	cout << RootElement->Value() << endl;
		AfxMessageBox(RootElement->Value());
		//获得第一个节点。
		TiXmlElement *FirstPerson = RootElement->FirstChildElement();
		//获得第一个节点的子节点的属性。
		TiXmlElement *NameElement = FirstPerson->FirstChildElement();
		TiXmlElement *AgeElement = NameElement->NextSiblingElement();
		TiXmlAttribute *IDAttribute = FirstPerson->FirstAttribute();
		//输出第一个Person的name内容,即周星星;age内容,即;ID属性,即。
		AfxMessageBox(NameElement->FirstChild()->Value());
		AfxMessageBox(AgeElement->FirstChild()->Value());
	}
	catch (CString& e)
	{
		return false;
	}
	return true;
}

还有个c++ XML解析器 CMarkup  这个解析器也可以解析远程的

		CString m_data;
		CString m_result;
		m_http.PostContent("http://www.xxxx.com/ref.php","",m_data,m_result); 
		CMarkup xml;
		//---------加载远程XML------------
		xml.SetDoc(m_data);

		//---------加载文件XML------------
		//xml.Load("d:\\mygood.xml");

		while (xml.FindChildElem("item"))
		{
			xml.IntoElem();
			xml.FindChildElem("t_id");
			CString csSN = xml.GetChildData();
			xml.FindChildElem("t_name");
			int nQty = atoi(xml.GetChildData());
			xml.OutOfElem();
		}


 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值