Tinyxml使用入门

来源:互联网 发布:在线电视直播软件下载 编辑:程序博客网 时间:2024/06/10 22:22

摘自:鼯鼠 http://www.dingge.com/forum/dispbbs.asp?boardid=43&Id=14213

 

<?xml version="1.0" encoding="UTF-8"?>
<document>
    <English name="MY" value="UTF32">The world has many languages</English>
    <Button name="OK_btn" x = "20" y = "77">OK</Button>
</document>
-------------------------------------------------------------------------------------------------------------------------

#include "../Tinyxml/tinyxml.h"
#include <iostream>
#include <string>
int main(void)
{
 TiXmlDocument doc( "test2.xml");
 doc.LoadFile();

 TiXmlHandle docH( &doc );
 TiXmlElement* element = docH.FirstChildElement( "document" ).FirstChildElement( "Button" ).Element();
 std::cout<<"<"<<element->Value()<<">"<<std::endl;
 std::cout<<"   name = "<<element->Attribute( "name" )<<std::endl;
 std::cout<<"   x = "<< element->Attribute( "x" )<<std::endl;
 std::cout<<"   y = "<< element->Attribute( "y" )<<std::endl;
 std::cout<<"   Text = "<<element->GetText()<<std::endl;

 getchar();
 return 0;

}

 这些代码我想已经很清楚了,所有的元素的值都会打印在屏幕上,如下:

<Button>
   name = OK_btn
   x = 20
   y = 77
   Text = OK

   这里的element 指针就是当前我们操作的指针,通过docH.FirstChildElement( "document" ).FirstChildElement( "Button" ).Element();方法我们获取了要寻找的Button这个元素的指针,然后它的元素就可以通过element->Attribute( "name" );element->Attribute( "x" )来得到了,使用非常方便。

Tinyxml中还有另外一种查找元素的方式,其对应的XML格式也是不同的,这种格式如下(以下直接借用了网友的例子):

<?xml version="1.0" encoding="UTF-8"?>
<persons>
<student>
   <stu_name>hami</stu_name>
   <stu_age>15</stu_age>
   <stu_sex>男</stu_sex>
</student>
<teacher>
   <tea_name>alin</tea_name>
   <tea_age>16</tea_age>
   <tea_sex>女</tea_sex>
</teacher>
</persons>

readXmlElement.cpp

#pragma comment(lib,"tinyxml.lib")
#include "tinyxml.h"
#include <iostream>
#include <string>
#define TIXML_USE_STL
int main(void)
{
TiXmlDocument *personDoc = new TiXmlDocument;
personDoc->LoadFile("test.xml");
TiXmlElement *personElement = personDoc->RootElement();
std::cout<<personElement->Value()<<std::endl;
TiXmlElement *student = personElement->FirstChildElement();
std::cout<<" "<<student->Value()<<std::endl;
TiXmlElement *nameElement = student->FirstChildElement();
std::cout<<"    "<<nameElement->Value();//<<std::endl;
//std::cout<<"    "<<nameElement->GetText()<<std::endl;
TiXmlElement *ageElement = nameElement->NextSiblingElement();
std::cout<<"    "<<ageElement->Value()<<std::endl;
TiXmlElement *sexElement = ageElement->NextSiblingElement();
std::cout<<"    "<<sexElement->Value()<<std::endl;
TiXmlElement *teacher = student->NextSiblingElement();
std::cout<<" "<<teacher->Value()<<std::endl;
TiXmlElement *teaNameElement = teacher->FirstChildElement();
std::cout<<"    "<<teaNameElement->Value()<<std::endl;
TiXmlElement *teaAgeElement = teaNameElement->NextSiblingElement();
std::cout<<"    "<<teaAgeElement->Value()<<std::endl;
TiXmlElement *teaSexElement = teaAgeElement->NextSiblingElement();
std::cout<<"    "<<teaSexElement->Value()<<std::endl;
return 0;
}