timyxml的简单使用

来源:互联网 发布:广东11选5当前遗漏数据 编辑:程序博客网 时间:2024/06/06 18:23
#include <iostream>#include <string>#include <cstdio>#include "tinyxml.h"using namespace std;int main(){TiXmlPrinter printer;string filepath = "test.xml";TiXmlDocument doc(filepath.c_str());bool loadOkay = doc.LoadFile();if (!loadOkay){printf( "Could not load test file %s. Error='%s'. Exiting.\n", filepath,doc.ErrorDesc() );exit( 1 );}doc.Accept(&printer);cout << printer.CStr() << std::endl;TiXmlElement* root = doc.RootElement();for( TiXmlNode*  item = root->FirstChild("item"); item; item = item->NextSibling("item")) {printf("_______________________________________\n");TiXmlNode* child = item->FirstChild();string name = child->ToElement()->GetText();if (!name.empty()) {cout << "name = " << name << endl;} child = item->IterateChildren(child);string addr = child->ToElement()->GetText();if (!addr.empty()){cout << "address = " << name << endl;} child = item->IterateChildren(child);string tel = child->ToElement()->GetText();if (!tel.empty()){cout << "tel = " << tel << endl; }child = item->IterateChildren(child);string email = child->ToElement()->GetText();if(!email.empty()){cout << "email = " << email << endl;} cout << endl;}return 0;}

test.xml

<?xml version="1.0" encoding="UTF-8" ?><phonebook>    <!--one item behalfs one contacted person.-->    <item>        <name>miaomaio</name>        <addr>Shaanxi Xi'an</addr>        <tel>13759911917</tel>        <email>miaomiao@home.com</email>    </item>    <item>        <name>gougou</name>        <addr>Liaoning Shenyang</addr>        <tel>15840330481</tel>        <email>gougou@home.com</email>    </item>    <!--more contacted persons.-->    <item>        <name>pipi</name>        <addr>Shaanxi Xianyang</addr>        <tel>02937310627</tel>        <email>pipi@home.com</email>    </item></phonebook>

输出:

<?xml version="1.0" encoding="UTF-8" ?><phonebook>    <!--one item behalfs one contacted person.-->    <item>        <name>miaomaio</name>        <addr>Shaanxi Xi'an</addr>        <tel>13759911917</tel>        <email>miaomiao@home.com</email>    </item>    <item>        <name>gougou</name>        <addr>Liaoning Shenyang</addr>        <tel>15840330481</tel>        <email>gougou@home.com</email>    </item>    <!--more contacted persons.-->    <item>        <name>pipi</name>        <addr>Shaanxi Xianyang</addr>        <tel>02937310627</tel>        <email>pipi@home.com</email>    </item></phonebook>_______________________________________name = miaomaioaddress = miaomaiotel = 13759911917email = miaomiao@home.com_______________________________________name = gougouaddress = gougoutel = 15840330481email = gougou@home.com_______________________________________name = pipiaddress = pipitel = 02937310627email = pipi@home.com请按任意键继续. . .



<?xml version="1.0" encoding="GB2312" ?><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>

#include <iostream>#include <string>#include "tinyxml.h"#pragma comment(lib, "tinyxml.lib")using std::string;int main(){TiXmlPrinter printer;TiXmlDocument* myDocument = new TiXmlDocument();myDocument->LoadFile("test.xml");myDocument->Accept(&printer);//std::cout << printer.CStr() << std::endl;TiXmlElement* rootElement = myDocument->RootElement();  //Classstd::cout << rootElement->Value() << ": ";std::cout << rootElement->FirstAttribute()->Value() << std::endl;std ::cout << "-----------------------------------------------" << std::endl;TiXmlElement* studentsElement = rootElement->FirstChildElement();  //StudentsTiXmlElement* studentElement = studentsElement->FirstChildElement();  //Studentwhile ( 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;std ::cout << "-----------------------------------------------" << std::endl;studentElement = studentElement->NextSiblingElement();}return 0;}

输出:

Class: 计算机软件班-----------------------------------------------name : 张三studentNo : 13031001sex : 男age : 22phone : 88208888address : 西安市太白南路二号-----------------------------------------------name : 李四studentNo : 13031002sex : 男age : 20phone : 88206666address : 西安市光华路-----------------------------------------------请按任意键继续. . .


原创粉丝点击