1.下载TinyXml(https://www.sourceforge.net/projects/tinyxml/)库
2.将tinyxml文件目录下的tinystr.h、tinystr.cpp、tinyxml.h、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp等放入工程目录下
3.使用的xml范例如下
<ToDo>
<Item priority="1">
<bold>
Book store!
</bold>
</Item>
<Item priority="2">
book1
</Item>
<Item priority="2">
book2
</Item>
</ToDo>
4.读取代码如下
a)申明TiXmlDocument 类型变量存储xml文件
b)申明TiXmlElement指针指向元素
c)申明TiXmlNode指针指向元素存储的文本
d)Value()方法返回元素名或文本
#include "tinyxml.h"
#include <iostream>
#include <string>
using namespace std;
void loadXML(){
TiXmlDocument doc;//申明一个文档类型变量,用来存储读取的xml文档
if (!doc.LoadFile("a.xml")) //检测xml文档是否存在
{
cerr << doc.ErrorDesc() << endl;
}
TiXmlElement* root = doc.FirstChildElement();//指向xml文档的根元素
if (root == NULL)//检测根元素存在性
{
cerr << "Failed to load file: No root element." << endl;
doc.Clear();
}
//elem指向根的第一个孩子元素
for (TiXmlElement* elem = root->FirstChildElement(); elem != NULL; elem = elem->NextSiblingElement()){
const char* arr = elem->Attribute("priority"); //通过元素属性寻找元素
if (strcmp(arr, "1") == 0){
TiXmlElement* elem1 = elem->FirstChildElement();
TiXmlNode* node = elem1->FirstChild();//node指向elem1元素下的文本
cout << node->Value() << endl;
}
if (strcmp(elem->Value(), "Item1") == 0){ //也可以通过元素名寻找元素
TiXmlNode* node = elem->FirstChild();
cout << node->Value() << endl;
}
}
}
int main(int argc, char* argv[])
{
loadXML();
system("pause");
return 0;
}
5.运行结果
Book store!
book2
请按任意键继续. . .
以上。。。