网上很多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;