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

来源:互联网 发布:网络经典歌曲500首 编辑:程序博客网 时间:2024/05/02 02:42

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