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

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();
		}


 

你可能感兴趣的:(vc/c++,php)