tinyxml的使用以及示例

来源:互联网 发布:万网备案是阿里云吗 编辑:程序博客网 时间:2024/06/13 14:38

1.下载xml源代码:github上面 clone

地址:https://github.com/aughey/tinyxml/

2.下来以后自己make一下主要的就几个头文件和源文件

3.测试案例

4.编译成静态库: ar rv libxml.a  *.o

5. 测试案例运行: g++ -o test test.o -L./ -lxml

6.问题:对于main程序,先编译成目标文件,最后链接成库,不能一步做完

主要过程


#include <iostream>#include <string>#include "tinyxml.h"#include "myxml.h"#include <assert.h>using namespace std;int main(int argc, const char *argv[]){    string xml_str = "<Class name=\"计算机软件班\">  \                      <Students>           \                      <student name=\"张三\" studentNo=\"13031001\" sex=\"男\" age=\"22\">  \                      <phone>88208888</phone>     \                      <address>西安市太白南路二号</address>  \                      </student>    \                      <student name=\"李四\" studentNo=\"13031002\" sex=\"男\" age=\"20\">  \                      <phone>88206666</phone>   \                      <address>广东省深圳市</address>  \                      </student>   \                      </Students>  \                      </Class>";    string msg_xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>       \                      <returnsms>   \                      <returnstatus>Success</returnstatus>      \                      <message>操作成功</message>     \                      <remainpoint>3</remainpoint>            \                      <taskID>1412291000299729</taskID>       \                      <successCounts>1</successCounts>       \                      <returnstatus>Success</returnstatus>      \                      <message>操作成功</message>     \                      <remainpoint>1</remainpoint>            \                      <taskID>111191000299729</taskID>       \                      <successCounts>1</successCounts>       \                      </returnsms>";    string rsp_msg = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>   \                      <returnsms>   \                      <statusbox>     \                      <mobile>13045877691</mobile>    \                      <taskid>1412261437053252</taskid>   \                      <status>10</status>     \                      <receivetime>2014-12-26 14:37:08</receivetime>      \                      <errorcode>DELIVRD</errorcode>      \                      <extno></extno>     \                      </statusbox>      \                      <statusbox>     \                      <mobile>13045877691</mobile>      \                      <taskid>1412291000299729</taskid>   \                      <status>10</status>     \                      <receivetime>2014-12-29 10:00:32</receivetime>        \                      <errorcode>DELIVRD</errorcode>        \                      <extno></extno>       \                      </statusbox>        \                      </returnsms>";        mylib::MyXml my_xml;        mylib::MyXml::MapMap map_value;   /*     my_xml.MultiParse(rsp_msg, map_value);        cout << map_value[0]["mobile"] << endl;        cout << map_value[1]["mobile"] << endl;        cout << map_value[0]["taskid"] << " " << map_value[1]["taskid"] << endl;*/        my_xml.SignalParse(msg_xml, map_value);        cout << "taskid:" << map_value[0]["taskID"] << endl;/*    TiXmlDocument* myDocument = new TiXmlDocument();    //myDocument->LoadFile("Students.xml");//解析多个    myDocument->Parse(rsp_msg.c_str());    TiXmlNode* pXmlFirst = myDocument->FirstChild();    TiXmlDeclaration* pXmlDec = pXmlFirst->ToDeclaration();//获取头部声明    cout << "szVer:" << pXmlDec->Version()        << " is absolute:" << pXmlDec->Standalone()        << " code type:" << pXmlDec->Encoding()        << endl;    myDocument->Print();    TiXmlElement* rootElement = myDocument->RootElement();//returnsms   // TiXmlElement* everyEle = rootElement->FirstChildElement();    TiXmlElement* pEle = NULL;    for(pEle = rootElement->FirstChildElement(); pEle; pEle = pEle->NextSiblingElement())    {     //   cout << "1" << endl;       // TiXmlElement* pEle_child = pEle->FirstChildElement();       // cout << "1:" << pEle_child->GetText() << endl;      //   pEle_child = pEle_child->NextSiblingElement();      //  cout << "2:" << pEle_child->GetText() << endl;    TiXmlElement* pEle_child;    //cout << pEle->FirstAttribute()->Name() << ":";    string rsp;    pEle->QueryValueAttribute("mobile", &rsp);    cout << "QueryValueAttribute:" <<  rsp << endl;   for(pEle_child = pEle->FirstChildElement(); pEle_child; pEle_child = pEle_child->NextSiblingElement())    {        cout << pEle_child->Value() << ":"<< endl;          string value;          if(pEle_child->GetText())          {              sp = pEle_child->GetText();          }          cout << value << endl;    }      // cout << pEle->GetText() << endl;    }    //ReadXmlText    //解析单个msg_xml    myDocument->Parse(msg_xml.c_str());    TiXmlNode* pXmlFirst = myDocument->FirstChild();    TiXmlDeclaration* pXmlDec = pXmlFirst->ToDeclaration();//获取头部声明    cout << "szVer:" << pXmlDec->Version()        << " is absolute:" << pXmlDec->Standalone()        << " code type:" << pXmlDec->Encoding()        << endl;    TiXmlElement* rootElement = myDocument->RootElement();  //  TiXmlNode* pParent = rootElement->Parent();  //  TiXmlNode* pChild = rootElement->FirstChild();    TiXmlElement* pEle = NULL;    for(pEle = rootElement->FirstChildElement(); pEle; pEle = pEle->NextSiblingElement())    {        cout << "\t";        cout << pEle->GetText() << endl;    }*/    //解析xml_str    /* myDocument->Parse(xml_str.c_str());       TiXmlElement* rootElement = myDocument->RootElement();  //Class       TiXmlElement* studentsElement = rootElement->FirstChildElement();  //Students       TiXmlElement* studentElement = studentsElement->FirstChildElement();  //Students       while ( studentElement) {       TiXmlAttribute* attributeOfStudent = studentElement->FirstAttribute();  //获得student的name属性       while ( attributeOfStudent ) {       std::cout << attributeOfStudent->Name() << " : " << attributeOfStudent->Value() << std::endl;       attributeOfStudent = attributeOfStudent->Next();       }       TiXmlElement* phoneElement = studentElement->FirstChildElement();//获得student的phone元素       std::cout << "phone" << " : " << phoneElement->GetText() << std::endl;       TiXmlElement* addressElement = phoneElement->NextSiblingElement();       std::cout << "address" << " : " << addressElement->GetText() << std::endl;       studentElement = studentElement->NextSiblingElement();       }       */  //     delete myDocument;    return 0;}


0 0
原创粉丝点击