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
- tinyxml的使用以及示例
- tinyxml库的使用
- tinyxml库的使用
- 转载:tinyxml 的使用
- 使用TinyXML的注意事项
- tinyxml的使用例子
- tinyxml的使用
- tinyxml的使用 转
- tinyxml的使用
- TinyXML的使用
- tinyxml库的使用
- TinyXML 的使用
- Tinyxml的使用
- TinyXml的使用
- tinyXML的基本使用
- tinyxml的使用
- tinyxml源码的使用
- C++:tinyxml的使用
- VMWare虚拟机下为Ubuntu 12.04.1配置静态IP(NAT方式)
- OpenCV学习:如何扫描图像、利用查找表和计时
- 实习周记III
- 第七章 知识结构导图
- mysql字符乱码详解
- tinyxml的使用以及示例
- 黑马程序员,Java基础知识三:面向对象
- debian 7 中文输入法
- Java 采用DES 加密和解密源码
- Java验证码
- Libgdx中裁剪
- Linux基本指令
- 【2014年12月29日】记录
- TextView Style 的简单应用