2025年使用tinyxml2库解析xml

使用tinyxml2库解析xmltinyxml2 简介 tinyxml2 是 c 编写的轻量级的 xml 解析器 而且是开放源代码的 在一些开源的游戏引擎中用的比较多 源码托管在 github 上 源码地址 https github com leethomason tinyxml2 tinyxml2 使用起来非常简单 下载源码后无需编译成 lib 文件 直接將 tinyxml2 h 和 tinyxml2

tinyxml2简介

tinyxml2是c++编写的轻量级的xml解析器,而且是开放源代码的,在一些开源的游戏引擎中用的比较多。源码托管在github上。
源码地址:https://github.com/leethomason/tinyxml2

tinyxml2使用起来非常简单,下载源码后无需编译成lib文件,直接將tinyxml2.h和tinyxml2.cpp两个文件添加到你自己的工程中即可。

tinyxml2使用

我们现在有一个persons.xml文件,里面存放着一些人员信息,内容如下:

    



30



20

/pre>

p>现在我们使用tinyxml2库遍历该xml文件,获取姓名为”花花“的人员的全部信息。

/p>

p>代码如下:

/p>

pre class='language-javascript'>

#include "stdafx.h"
#include
#include
#include "tinyxml2.h"
#define String std::string
using namespace tinyxml2;
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
/* 30 20 */
//通过遍历输出姓名为“花花”的个人信息
XMLDocument* doc = new XMLDocument();
if(doc->LoadFile("persons.xml") != XML_NO_ERROR)
{
cout<<"read file error!"< 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<Name()<<":"<Value()< //遍历person的其他子节点
XMLElement * perAttr = person->FirstChildElement();
while(perAttr)
{
cout<Name()<<":"<GetText()< 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()方法不断循环遍历即可。

运行效果

可以看到我们需要的信息打印了出来。

编程小号
上一篇 2025-02-13 16:51
下一篇 2025-01-26 17:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/133111.html