使用tinyxml2库解析xml
XML 使用 解析
2023-06-13 09:11:19 时间
大家好,又见面了,我是你们的朋友全栈君。
tinyxml2简介
tinyxml2是c++编写的轻量级的xml解析器,而且是开放源代码的,在一些开源的游戏引擎中用的比较多。源码托管在github上。 源码地址:https://github.com/leethomason/tinyxml2
tinyxml2使用起来非常简单,下载源码后无需编译成lib文件,直接將tinyxml2.h和tinyxml2.cpp两个文件添加到你自己的工程中即可。
tinyxml2使用
我们现在有一个persons.xml文件,里面存放着一些人员信息,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person name="张三">
<sex>男</sex>
<age>30</age>
</person>
<person name="花花">
<sex>女</sex>
<age>20</age>
</person>
</persons>
现在我们使用tinyxml2库遍历该xml文件,获取姓名为”花花“的人员的全部信息。
代码如下:
#include "stdafx.h"
#include <string>
#include <iostream>
#include "tinyxml2.h"
#define String std::string
using namespace tinyxml2;
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
/* <?xml version="1.0" encoding="UTF-8"?> <persons> <person name="张三"> <sex>男</sex> <age>30</age> </person> <person name="花花"> <sex>女</sex> <age>20</age> </person> </persons> */
//通过遍历输出姓名为“花花”的个人信息
XMLDocument* doc = new XMLDocument();
if(doc->LoadFile("persons.xml") != XML_NO_ERROR)
{
cout<<"read file error!"<<endl;
return -1;
}
//获取根节点,即persons节点
XMLElement* root = doc->RootElement();
XMLElement* person = root->FirstChildElement("person");
while (person)
{
//获取person的name属性
const XMLAttribute * nameAttr = person->FirstAttribute();
String perName = nameAttr->Value();
if(perName == "花花")
{
cout<<nameAttr->Name()<<":"<<nameAttr->Value()<<endl;
//遍历person的其他子节点
XMLElement * perAttr = person->FirstChildElement();
while(perAttr)
{
cout<<perAttr->Name()<<":"<<perAttr->GetText()<<endl;
perAttr = perAttr->NextSiblingElement();
}
}
person = person->NextSiblingElement();
}
delete doc;
system("pause");
}
tinyxml2采用DOM(文档对象模型)方式处理xml文件,xml文件中的每一种元素都有对应的类。
doc->LoadFile("persons.xml")
XMLDocument类的对象代表一份xml文档实例,调用LoadFile方法与xml文件绑定。
XMLElement* root = doc->RootElement();
XMLElement* person = root->FirstChildElement("person");
我们通过XMLDocument类的RootElement获取根节点(xml文件的根节点只有一个),通过root->FirstChildElement(“person”)获取元素名为person的第一个子节点。有了该节点调用XMLElement类NextSiblingElement()方法不断循环遍历即可。
运行效果
可以看到我们需要的信息打印了出来。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137488.html原文链接:https://javaforall.cn
相关文章
- 使用dom4j解析xml工具类[通俗易懂]
- 使用rapidxml 生成xml文件[通俗易懂]
- 【Groovy】xml 序列化 ( 使用 MarkupBuilder 生成 xml 数据 | 设置 xml 标签内容 | 设置 xml 标签属性 )
- ORA-44732: Path string cannot be removed from the repository XML Index ORACLE 报错 故障修复 远程处理
- Java利用dom4j生成xml文件、解析XML详解编程语言
- 使用python3.4解析xml文件(sax、dom、etree)详解编程语言
- java使用XPath解析xml详解编程语言
- Oracle 视图 V$XML_AUDIT_TRAIL 官方解释,作用,如何使用详细说明
- .xml使用Oracle配置POM.XML(oraclepom)
- Oracle数据库实现XML解析(oracle解析xml)
- 使用MySQL中XML实现条件判断(mysql中xml判断)
- 使用MySQL和XML编写高效语句(mysql xml 语句)
- 使用MySQL和XML注释提升数据库设计效率(mysql xml 注释)
- MySQL数据库如何使用XML文件进行数据存储与交换(mysql xml文件)
- MySQL 数据库使用 XML 进行替换操作(mysql xml替换)
- Oracle XML日志发掘数据的奥秘之路(oracle xml日志)
- 优化Oracle XML伪列体验提升表现(oracle xml伪列)
- Android使用Pull方法解析XML文件的方法
- java使用xpath解析xml示例分享
- js使用递归解析xml
- 使用jquery解析XML示例代码