现在的位置: 首页 > 综合 > 正文

cocos2d-x中详解tinyXml来解析xml(超级入门版)(object向c++转型系列教程4)

2013年12月10日 ⁄ 综合 ⁄ 共 1930字 ⁄ 字号 评论关闭

网上很多tinyXml教程都不详细。今天自己研究了 一下xml的解析。把研究的结果拿出来分享一下。

首先我先把tinyxml解析的文件放入dbank网盘里面了。大家可以下载下来放入项目中用。如果过期了,请在下面留言。

tinyXml下载地址:  http://dl.vmall.com/c0g1jkrc0y

现在我们来解析下面xml文件

<Root>

    <Person ID="1">

        <name>周星星</name>

        <age>20</age>

    </Person>

    <Person ID="2">

        <name>白晶晶</name>

        <age>18</age>

    </Person>

    <Other ID="6">

        <name>bitch</name>

        <age>16</age>

    </Other>

</Root>

这个xml文件里在<Root>下面有三个子标签。

2,其中前两个标签都为<Person>而第三个标签为<Other>标签。

3,然后这三个子标签都有自己的属性 ID="">

4,三个标签下面都有两个子标签<name>,<age>


有两种方法来读取我们要的标签;现在我们先用第一种正规的方法来读取(后面会用另外一种简单的方法来读取)

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

    TiXmlDocument *myDocument = new TiXmlDocument(CCFileUtils::fullPathFromRelativePath("WordList3.xml"));

    myDocument->LoadFile();

    //获得根元素,即Persons

    TiXmlElement *RootElement = myDocument->RootElement();

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

    

    cout << RootElement->Value() << endl;

    //获得第一个Person节点。

    TiXmlElement *FirstPerson = RootElement->FirstChildElement();

    //获得第一个Personname节点和age节点和ID属性。

    TiXmlElement *NameElement = FirstPerson->FirstChildElement();

    TiXmlElement *AgeElement = NameElement->NextSiblingElement();

    TiXmlAttribute *IDAttribute = FirstPerson->FirstAttribute();

    //输出第一个Personname内容,即周星星;age内容,即20ID属性,即1

    cout << NameElement->FirstChild()->Value()
<< endl;

    cout << AgeElement->FirstChild()->Value()
<< endl;

    cout << IDAttribute->Value() << endl;



第二种方法:简单的方法(我们来读取第二个<Person ID="2">标签下的

<name>白晶晶</name>

        <age>18</age>



TiXmlDocument* xmlDoc = new TiXmlDocument(CCFileUtils::fullPathFromRelativePath("WordList3.xml"));

    xmlDoc->LoadFile();

    TiXmlElement* rootElement = xmlDoc->RootElement();

    CCLog("%s", rootElement->Value());

    TiXmlElement* firstElement = rootElement->FirstChildElement();

    TiXmlElement* element0 = firstElement->NextSiblingElement();

    TiXmlElement* element1 = element0->FirstChildElement();

    TiXmlElement* element2 = element1->NextSiblingElement();

    CCLog("firstElement:%s secondElement:%s", element1->GetText(),
element2->GetText());

    delete xmlDoc;

抱歉!评论已关闭.