zoukankan      html  css  js  c++  java
  • TinyXML使用方法

       这次使用了TinyXML后,觉得这个东西真是不错,于是将使用方法坐下总结来和大家分享。
        该解析库在开源网站(http://sourceforge.net )上有下载,在本Blog也提供下载(下载TinyXML
        TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。

        注:DOM模型即文档对象模型,是将整个文档分成多个元素(如书、章、节、段等),并利用树型结构表示这些元素之间的顺序关系以及嵌套包含关系(理解html语言的读者会很容易理解这种树状模型)。               
        如下是一个XML片段:
        <Persons>
            <Person ID="1">
                <name>周星星</name>
                <age>20</age>
            </Person>
            <Person ID="2">
                <name>白晶晶</name>
                <age>18</age>
            </Person>
        </Persons>

        在TinyXML中,根据XML的各种元素来定义了一些类:
            TiXmlBase:整个TinyXML模型的基类。
                    TiXmlAttribute:对应于XML中的元素的属性。
                    TiXmlNode:对应于DOM结构中的节点。
                            TiXmlComment:对应于XML中的注释。
                            TiXmlDeclaration:对应于XML中的申明部分,即<?versiong="1.0" ?>。
                            TiXmlDocument:对应于XML的整个文档。
                            TiXmlElement:对应于XML的元素。
                            TiXmlText:对应于XML的文字部分。
                            TiXmlUnknown:对应于XML的未知部分。 
            TiXmlHandler:定义了针对XML的一些操作。
        那我们如何使用这些类以及他们的方法来操纵我们的XML呢?请看下面。

        一、读取XML(假设我们的Xml文档中的内容与上面的Xml内容一样)
        //创建一个XML的文档对象。
        TiXmlDocument *myDocument = new TiXmlDocument("填上你的Xml文件名");
        myDocument->LoadFile();
        //获得根元素,即Persons。
        TiXmlElement *RootElement = myDocument.RootElement();
        //输出根元素名称,即输出Persons。
        cout << RootElement->Value() << endl;
        //获得第一个Person节点。
        TiXmlElement *FirstPerson = RootElement->FirstChildElement();
        //获得第一个Person的name节点和age节点和ID属性。
        TiXmlElement *NameElement = FirstPerson->FirstChildElement();
        TiXmlElement *AgeElement = NameElement->NextSiblingElement();
        TiXmlAttribute *IDAttribute = FirstPerson->FirstAttribute();
        //输出第一个Person的name内容,即周星星;age内容,即20;ID属性,即1。
        cout << NameElement->FirstChild()->Value << endl;
        cout << AgeElement->FirstChild()->Value << endl;
        cout << IDAttribute->Value() << endl;

        
        看,读取XML是不是很简单阿,和Java的XML解析库非常的相似,就是名字改了一下而已。
        二、生成XML内容
        //创建一个XML的文档对象。
        TiXmlDocument *myDocument = new TiXmlDocument();
        //创建一个根元素并连接。
        TiXmlElement *RootElement = new TiXmlElement("Persons");
        myDocument->LinkEndChild(RootElement);
        //创建一个Person元素并连接。
        TiXmlElement *PersonElement = new TiXmlElement("Person");
        RootElement->LinkEndChild(PersonElement);
        //设置Person元素的属性。
        PersonElement->SetAttribute("ID", "1");
        //创建name元素、age元素并连接。
        TiXmlElement *NameElement = new TiXmlElement("name");
        TiXmlElement *AgeElement = new TiXmlElement("age");
        PersonElement->LinkEndChild(NameElement);
        PersonElement->LinkEndChild(AgeElement);
        //设置name元素和age元素的内容并连接。
        TiXmlText *NameContent = new TiXmlText("周星星");
        TiXmlText *AgeContent = new TiXmlText("20");
        NameElement->LinkEndChild(NameContent);
        AgeElement->LinkEndChild(AgeContent);
        //保存到文件
        myDocument->SaveFile("要保存的xml文件名");

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

        

  • 相关阅读:
    软件测试人员的年终绩效考核怎么应对
    收藏
    顶踩组件 前后两版
    订阅组件
    hdu 1963 Investment 完全背包
    hdu 4939 Stupid Tower Defense 动态规划
    hdu 4405 Aeroplane chess 动态规划
    cf 414B Mashmokh and ACM 动态规划
    BUPT 202 Chocolate Machine 动态规划
    hdu 3853 LOOPS 动态规划
  • 原文地址:https://www.cnblogs.com/jinsedemaitian/p/5589095.html
Copyright © 2011-2022 走看看