Xml解析 --TinyXML-2
程序开发
2023-09-08 18:45:05
TinyXML-2 是小巧、精简且高效的C++ XML 解析库,可以被方便地应用到其他项目中。
github: https://github.com/leethomason/tinyxml2
简而言之,tinyxml-2是一个xml解析器,从xml文档构建一个可以读取、修改和保存的文档对象模型(dom)。
有多种方法可以访问XML数据并与之交互。TinyXML-2使用的是文档对象模型(DOM),这意味着XML数据被解析为可以浏览和操作的C++对象,然后写入磁盘或另一个输出流。还可以从头开始用C++对象构造XML文档,并将其写入磁盘或其他输出流。甚至可以使用tinyxml-2以编程方式从代码中流式处理xml,而无需先创建文档。
测试文件
1 13506681856 123@126.com
使用方法
将tinyxml2.cpp和tinyxml2.h拷贝至项目目录,使用时包含
#include “tinyxml2.h”
using namespace tinyxml2;
测试代码
void test_xml()
{const char* openPath = "settings/xml/test.xml";const char* changePath = "settings/xml/change.xml";XMLDocument doc;if (doc.LoadFile( openPath ) != 0){cout<<"load xml file failed!"<FirstChildElement( "User" );if(userNode == NULL || userNode == 0){cout<<"userNode is NULL!"<Attribute( "Name" );const char* pass = userNode->Attribute( "Password" );cout<<"Name:"<FirstChildElement("Gender");XMLElement* mobileNode = userNode->FirstChildElement("Mobile");
XMLElement* emailNode = userNode->FirstChildElement("Email");
//API:IntText(),UnsignedText(),Int64Text(),DoubleText(),BoolText() and FloatText() are suportedint gen = genderNode->IntText();const char* mobile = mobileNode->GetText();const char* email = emailNode->GetText();cout<<"Gender:"<FirstChildElement( "zoo_cute" );if(zooNode == NULL || zooNode == 0){cout<<"zooNode is NULL!"<FirstChildElement("item"); item; item = item->NextSiblingElement("item")){const char* id = item->Attribute( "id" );const char* name = item->Attribute( "name" );int down_limit = atoi(item->Attribute( "down_limit" ));int up_limit = atoi(item->Attribute( "up_limit" ));cout<<"id:"<SetAttribute("up_limit", 2 * up_limit );doc.SaveFile(changePath);}}
代码中读取xml两种常见的配置方式下的各个属性值进行展示,后面修改了zoo_cute节点下item子节点的up_limit属性值,并将修改后的xml内容保存到另个一个文件中。
执行结果:
修改后保存的xml内容如下:
标签:
上一篇:
基于TypeScript的Angular6.X系列学习笔记-简介
下一篇:
相关文章
-
无相关信息