博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

tinyxml 用法

Posted on 2016-10-24 09:40  bw_0927  阅读(315)  评论(0)    收藏  举报

Element是Node的子集,XmlNode表示一个节点,包括XmlElement(元素)和XmlAttribute(属性)等。 如:

<Alarm lock="true">            //node  
      <Time>                        //node  
          StringValue               //node  
      </Time>                       //node  
</Alarm>                           //node  

  以上Alarm(元素节点),lock(属性节点),Time(元素节点),StringValue(文本节点)都是Node,但是只有 <Alarm>......</Alarm>和<Time>StringValue</Time>是Element   

----------------以下是我自己的理解--------------

xml element是继承于node,除了element之外,还有XmlAttribute、XmlText等。
通过某些方法可能可以得到某个值,可能是element、attribute、xmlText等,如果你不确定,则可以使用node来做返回值的类型。
node只是具有了一些通用的方法,而element则具有更具体的功能。

 

 

http://blog.csdn.net/nat_myron/article/details/8740028

关于TinyXML基本使用:

 

 

XML文档的结构:

TinyXml实现的时DOM访问模型,主要类间的关系如下图所示:

TiXmlBase:其他类的基类,是个抽象类

TiXmlNode:表示一个节点,包含一般方法,如访问自节点、兄弟节点、编辑自身、编辑子节点

TiXmlDocument:表示整个XML文档,不对应其中某个特定的节点。

TiXmlElement:表示元素节点,可以包含子节点和TiXmlAttribute

TiXmlComment:表示注释

TiXmlDeclaration:表示声明

TiXmlText:表示文本节点

TiXmlUnknown:表示未知节点,通常是出错了

TiXmlAttribute:表示一个元素的属性

 

 

<Persons>  
    <Person ID="1">  
        <name>周星星</name>  
        <age>20</age>  
    </Person>  
    <Person ID="2">  
        <name>白晶晶</name>  
        <age>18</age>  
    </Person>  
</Persons>  

  

 

1.创建一个XML的文档对象

 

[cpp] view plain copy
 
  1. TiXmlDocument *myDocument = new TiXmlDocument("填上你的Xml文件名");//可以有(相对)路径  
  2. myDocument->LoadFile();  


2.获得根元素,即Persons

 

 

[cpp] view plain copy
 
  1. TiXmlElement *RootElement = myDocument.RootElement();  
  2.    cout << RootElement->Value() << endl;    //输出根元素名称,即输出Persons。  


3.获得第一个Person节点,就第一个子结点 ,若不TiXmlEelement的,用FirstChild()

 

 

[cpp] view plain copy
 
  1. TiXmlElement *FirstPerson = RootElement->FirstChildElement();  


4.获得第一个Person的name节点和age节点和ID属性

 

 

[cpp] view plain copy
 
  1. TiXmlElement *NameElement = FirstPerson->FirstChildElement();  
  2.    TiXmlElement *AgeElement = NameElement->NextSiblingElement();  
  3.    TiXmlAttribute *IDAttribute = FirstPerson->FirstAttribute();  


5.指向下一个同级的结点   用NextSiblingElement();

 

   就是指向下一个兄弟节点

 

6.输出第一个Person的内容,即周星星;即20;ID属性1。这里的NameElement只是指向 <name>,nameElement->value()就是 name
而不是周星星,“周星星”是一个文本格式的结点,而要NameElement->FirstChild()来指向它

 

[cpp] view plain copy
 
  1. cout << NameElement->FirstChild()->Value() << endl;  
  2.   cout << AgeElement->FirstChild()->Value ()<< endl;  
  3.   cout << IDAttribute->Value() << endl;  


7.创建一个XML的文档对象

 

 

[cpp] view plain copy
 
  1. TiXmlDocument *myDocument = new TiXmlDocument();  


8.创建一个根元素并连接

 

 

[cpp] view plain copy
 
  1. TiXmlElement *RootElement = new TiXmlElement("Persons");  
  2.     myDocument->LinkEndChild(RootElement);  


9.创建一个Person元素并连接

[cpp] view plain copy
 
  1. TiXmlElement *PersonElement = new TiXmlElement("Person");  
  2.     RootElement->LinkEndChild(PersonElement);  


10.设置Person元素的属性

 

 

[cpp] view plain copy
 
  1. PersonElement->SetAttribute("ID""1");  


11.创建name元素、age元素并连接

 

 

[cpp] view plain copy
 
  1. TiXmlElement *NameElement = new TiXmlElement("name");  
  2. TiXmlElement *AgeElement = new TiXmlElement("age");  
  3. PersonElement->LinkEndChild(NameElement);  
  4. PersonElement->LinkEndChild(AgeElement);  


12.设置name元素和age元素的内容并连接

 

 

[cpp] view plain copy
 
  1. TiXmlText *NameContent = new TiXmlText("周星星");  
  2. TiXmlText *AgeContent = new TiXmlText("20");  
  3. NameElement->LinkEndChild(NameContent);  
  4. AgeElement->LinkEndChild(AgeContent);  


13.保存到文件

 

 

[cpp] view plain copy
 
  1. myDocument->SaveFile("要保存的xml文件名");  


  这样,便创建了一个如下的xml文件:
    <Persons>
        <Person ID="1">
            <name>周星星</name>
            <age>20</age>
        </Person>
    </Persons>