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