TiXmlDeclaration TiXmlDeclaration LinkEndChild

来源:互联网 发布:模仿声音软件下载 编辑:程序博客网 时间:2024/06/08 16:15
下面我用个简单的例子说明如何使用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" 职位="人事部经理">
        
<姓名>黄蓉</姓名>
    
</员工>
</群英集团>
0 0
原创粉丝点击