TinyXml入门

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的文档对象。

     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("C:\\a.xml");

 

    这样,便创建了一个如下的xml文件:

    <Persons>

        <Person ID="1">

            <name>周星星</name>

            <age>20</age>

        </Person>

</Persons>

 

 

把6个文件复制到项目中 tinystr.h tinyxml.h tinystr.cpp tinyxml.cpp tinyxmlerror.cpp tinyxmlparser.cpp 

将CPP文件的头部加上 #include "stdafx.h" , 要使用的地方 #include "tinyxml.h"

 

注:#include "stdafx.h" 前所有的语句都会自动忽略。防止出现  “意外的#endif”

 

读取XML(假设我们的Xml文档中的内容与上面的Xml内容一样)

    //创建一个XML的文档对象。

     CString strMsg;

     TiXmlDocument *myDocument = new TiXmlDocument("C:\\a.xml");

     myDocument->LoadFile();

 

     //获得根元素,即Persons。

     TiXmlElement *RootElement = myDocument->RootElement();

     //输出根元素名称,即输出Persons。

     strMsg.Format("%s",RootElement->Value());

     WriteLog(strMsg); 

     //获得第一个Person节点。

     TiXmlElement *FirstPerson = RootElement->FirstChildElement();

     //获得第一个Person的name节点和age节点和ID属性。

     TiXmlElement *NameElement = FirstPerson->FirstChildElement();

     TiXmlElement *AgeElement = NameElement->NextSiblingElement();

     TiXmlAttribute *IDAttribute = FirstPerson->FirstAttribute();

     //输出第一个Person的name内容,即周星星;age内容,即;ID属性,即。

     strMsg.Format("name:%s,age:%s,ID:%s",NameElement->FirstChild()->Value(),AgeElement->FirstChild()->Value(),IDAttribute->Value());

     WriteLog(strMsg); 

 

 

你可能感兴趣的:(xml)