cocos2d-x中详解tinyXml来解析xml(超级入门版)(object向c++转型系列教程4)
2012-10-05 16:35
405 查看
网上很多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();
//获得第一个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;
第二种方法:简单的方法(我们来读取第二个<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;
首先我先把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();
//获得第一个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;
第二种方法:简单的方法(我们来读取第二个<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;
相关文章推荐
- cocos2d-x 读写xml文件,沙盒路径下超详细攻略(object向c++转型系列教程5)
- 添加一个Object-c的UI控件到cocos2d-x的c++代码中(object向c++转型系列教程1)
- c++的字符串char与string相互转化,以及string的,切割,替换字符,字符串拼接方法(object向c++转型系列教程2)
- c++中的二维vector注意事项(object向c++转型系列教程3)
- c++的字符串char与string相互转化,以及string的,切割,替换字符,字符串拼接方法(object向c++转型系列教程2)
- TinyXML(C++ XML解析库)
- 告诉你们XML解析方法详解之自动化测试系列笔记
- Cocos2d-x 3.0 使用TinyXml 解析XML文件
- 毕业论文中使用的XML读取和制造工具!!!C++ 使用TinyXML解析XML文件
- C++使用TinyXML生成和解析xml文件
- 用ant的build.xml构建自动化打包android apk 完全详解(打包系列教程之二)
- cocos2d-x游戏开发系列教程-超级玛丽10-怪物与马里奥冲突检测
- Cocos2d-x 3.0final 终结者系列教程22Cocos Studio动画编辑器的帧动画和骨骼动画详解
- 【Linux C/C++系列教程】 第一讲 HelloWorld程序内存分区详解
- 告诉你们XML解析方法详解之自动化测试系列笔记
- TinyXML C++解析XML
- C++ 使用TinyXML解析XML文件
- 详解高速神器python脚步打包android apk,超级快!!(打包系列教程之六)
- cocos2d-x游戏开发系列教程-超级玛丽10-怪物与马里奥冲突检测
- 学习笔记之cocos2d-x2.1.1实现修改plist文件数据,用TinyXml解析XML