TiXmlDeclaration TiXmlDeclaration LinkEndChild

下面我用个简单的例子说明如何使用tinyXML操作xml文件。在讲例子之前我先说说tinyXML中主要类和xml文档之间的对应关系。下面是tinyXML中主要class的类图,反应各个类之间的静态关系。 

引用来自tinyXML文档

    TiXmlBase是所有类的基类,TiXmlNode、TiXmlAttribute两个类都继承来自TiXmlBase类,其中TiXmlNode类指的是所有被<...>...<.../>包括的内容,而xml中的节点又具体分为以下几方面内容,分别是声明、注释、节点以及节点间的文本,因此在TiXmlNode的基础上又衍生出这几个类TiXmlComment、TiXmlDeclaration、TiXmlDocument、TiXmlElement、TiXmlText、TiXmlUnknown,分别用来指明具体是xml中的哪一部分。TiXmlAttribute类不同于TiXmlNode,它指的是在尖括号里面的内容,像<... ***=...>,其中***就是一个属性。这块我具体用一个xml文档说明一下,内容如下: 
Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <phonebook>  
  3.     <!--one item behalfs one contacted person.-->  
  4.     <item>  
  5.         <name>miaomaio</name>  
  6.     <addr>Shaanxi Xi'an</addr>  
  7.     <tel>13759911917</tel>  
  8.     <email>miaomiao@home.com</email>  
  9.     </item>  
  10.     <item>  
  11.         <name>gougou</name>  
  12.     <addr>Liaoning Shenyang</addr>  
  13.     <tel>15840330481</tel>  
  14.     <email>gougou@home.com</email>  
  15.     </item>  
  16.     <!--more contacted persons.-->  
  17. </phonebook>  

  • 像TiXmlDeclaration指的就是<?xml version="1.0" encoding="UTF-8"?>,
  • 像TiXmlComment指的就是<!--one item behalfs one contacted person.-->、 <!--more contacted persons.-->,
  • 像TiXmlDocument指的就是整个xml文档,
  • 像TiXmlElement指的就是<phonebook>、<item>、<name>、<addr>等等这些节点,
  • 像TiXmlText指的就是‘gougou’、‘15840330481’这些夹在<item>与</item>、<name>与</name>、<addr>与</addr>之间的文本文字,
  • 像TiXmlAttribute指的就是<?xml version="1.0" encoding="UTF-8"?>节点中version、encoding,
  • 除此之外就是TiXmlUnknown。


int  Write()
{
    TiXmlDocument doc ;
    TiXmlDeclaration 
* declare  = new  TiXmlDeclaration( " 1.0 "  ,  "" , "" );
    doc.LinkEndChild(declare);
    doc.LinkEndChild(
new  TiXmlComment( " 群英集团人力资源表 " ));

    TiXmlElement 
* root     =   new  TiXmlElement( " 群英集团 " );
    
    TiXmlElement 
* sub     =   new  TiXmlElement( " 员工 " );
    sub
-> SetAttribute( " ID "  ,  " 011 " );                 //  向sub中添加属性
    sub -> SetAttribute( " 职位 "  ,  " 技术总监 " );
    TiXmlElement 
* child  =   new  TiXmlElement( " 姓名 " );     //  建立子元素
    TiXmlText  * content  = new  TiXmlText( " 虚竹 " );         //  建立文本
    child -> LinkEndChild(content);                     //  将建立的文本追加到child所指的子元素中
    sub -> LinkEndChild(child);                         //  将child追加到sub中,以作为子元素
    root -> LinkEndChild(sub);                         //  将sub追加到root中,以作为子元素

    sub    
=   new  TiXmlElement( " 员工 " );
    sub
-> SetAttribute( " ID "  ,  " 029 " );
    sub
-> SetAttribute( " 职位 "  ,  " 技术总监 " );
    child 
=   new  TiXmlElement( " 姓名 " );
    content 
= new  TiXmlText( " 乔峰 " );
    child
-> LinkEndChild(content);
    sub
-> LinkEndChild(child);    
    root
-> LinkEndChild(sub);

    sub    
=   new  TiXmlElement( " 员工 " );
    sub
-> SetAttribute( " ID "  ,  " 100 " );
    sub
-> SetAttribute( " 职位 "  ,  " 总架构师 " );
    child 
=   new  TiXmlElement( " 姓名 " );
    content 
= new  TiXmlText( " 扫地僧 " );
    child
-> LinkEndChild(content);
    sub
-> LinkEndChild(child);    
    root
-> LinkEndChild(sub);

    sub    
=   new  TiXmlElement( " 员工 " );
    sub
-> SetAttribute( " ID "  ,  " 101 " );
    sub
-> SetAttribute( " 职位 "  ,  " 公关部经理 " );
    child 
=   new  TiXmlElement( " 姓名 " );
    content 
= new  TiXmlText( " 韦小宝 " );
    child
-> LinkEndChild(content);
    sub
-> LinkEndChild(child);    
    root
-> LinkEndChild(sub);

    sub    
=   new  TiXmlElement( " 员工 " );
    sub
-> SetAttribute( " ID "  ,  " 102 " );
    sub
-> SetAttribute( " 职位 "  ,  " 人事部经理 " );
    child 
=   new  TiXmlElement( " 姓名 " );
    content 
= new  TiXmlText( " 黄蓉 " );
    child
-> LinkEndChild(content);
    sub
-> LinkEndChild(child);    
    root
-> LinkEndChild(sub);

    doc.LinkEndChild(root);

    doc.SaveFile(
" WriteTest.xml " );    
    
    
    
return   0 ;
}

输出效果:
<? xml version="1.0"  ?>
<!-- 群英集团人力资源表 -->
< 群英集团 >
    
< 员工 ID ="011"  职位 ="技术总监" >
        
< 姓名 > 虚竹 </ 姓名 >
    
</ 员工 >
    
< 员工 ID ="029"  职位 ="技术总监" >
        
< 姓名 > 乔峰 </ 姓名 >
    
</ 员工 >
    
< 员工 ID ="100"  职位 ="总架构师" >
        
< 姓名 > 扫地僧 </ 姓名 >
    
</ 员工 >
    
< 员工 ID ="101"  职位 ="公关部经理" >
        
< 姓名 > 韦小宝 </ 姓名 >
    
</ 员工 >
    
< 员工 ID ="102"  职位 ="人事部经理" >
        
< 姓名 > 黄蓉 </ 姓名 >
    
</ 员工 >
</ 群英集团 >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值