TinyXML-2介绍

1.简介

TinyXML-2 是一个简单、小巧的 C++ XML 解析库,它是 TinyXML 的一个改进版本,专注于易用性和性能。TinyXML-2 用于读取、修改和创建 XML 文档。它不依赖于外部库,并且可以很容易地集成到项目中。

tinyXML-2 的主要特点包括:

  • DOM 风格 API:TinyXML-2 提供了 Document Object Model(DOM)风格的API,允许开发者以树形结构的方式操作 XML 数据。
  • 轻量级:TinyXML-2 的代码量小,不需要外部依赖,适合嵌入式系统和移动设备。
  • 易于使用:TinyXML-2 的 API 设计直观,易于理解和集成。
  • 错误处理:TinyXML-2提供了详细的错误信息,帮助开发者快速定位问题。

2.环境搭建

下载地址:https://github.com/leethomason/tinyxml2/tree/10.0.0

解压文件后,直接引用以下两个文件即可。

3.代码示例

解析XML字符串。

cpp 复制代码
#include <iostream>
#include "tinyxml2.h"

using namespace std;
using namespace tinyxml2;

int main()
{
	static const char* xml =
		"<?xml version=\"1.0\"?>"
		"<!DOCTYPE PLAY SYSTEM \"play.dtd\">"
		"<information>"
		"	<attributeApproach v='2' />"
		"	<textApproach>"
		"		<v>2</v>"
		"	</textApproach>"
		"</information>";

	XMLDocument doc;
	doc.Parse(xml);

	int v0 = 0;
	int v1 = 0;

	XMLElement* attributeApproachElement = doc.FirstChildElement()->FirstChildElement("attributeApproach");
	attributeApproachElement->QueryIntAttribute("v", &v0);

	XMLElement* textApproachElement = doc.FirstChildElement()->FirstChildElement("textApproach");
	textApproachElement->FirstChildElement("v")->QueryIntText(&v1);

	printf("Both values are the same: %d and %d\n", v0, v1);

	return doc.ErrorID();
}

使用以下代码,可以直接加载XML文件。

cpp 复制代码
XMLDocument doc;
doc.LoadFile( "resources/dream.xml" );

写入XML文件。

cpp 复制代码
#include <iostream>
#include "tinyxml2.h"

using namespace std;
using namespace tinyxml2;

int main()
{
	XMLDocument* doc = new XMLDocument();

	XMLNode* declaration = doc->InsertFirstChild(doc->NewDeclaration("xml version=\"1.0\" encoding=\"UTF-8\""));

	XMLNode* element = doc->InsertEndChild(doc->NewElement("element"));

	XMLElement* sub[3] = { doc->NewElement("sub"), doc->NewElement("sub"), doc->NewElement("sub") };
	for (int i = 0; i < 3; ++i) 
	{
		sub[i]->SetAttribute("attrib", i);
	}
	element->InsertEndChild(sub[2]);

	XMLNode* comment = element->InsertFirstChild(doc->NewComment("comment"));

	element->InsertAfterChild(comment, sub[0]);
	element->InsertAfterChild(sub[0], sub[1]);
	sub[2]->InsertFirstChild(doc->NewText("Text!"));

	XMLElement* sub4 = doc->NewElement("textApproach");

	element->InsertAfterChild(sub[2], sub4);

	XMLElement* sub5 = doc->NewElement("v");
	sub4->InsertFirstChild(sub5);

	sub5->InsertFirstChild(doc->NewText("2"));

	doc->Print();

	doc->SaveFile("./pretty.xml");

	return 0;
}

运行结果:

4.更多参考

libVLC 专栏介绍-CSDN博客

Qt+FFmpeg+opengl从零制作视频播放器-1.项目介绍_qt opengl视频播放器-CSDN博客

QCharts -1.概述-CSDN博客

JSON++介绍

相关推荐
打鱼又晒网3 分钟前
Linux网络 | 网络计算器客户端实现与Json的安装以及使用
linux·c++·网络协议·计算机网络
谢道韫6666 分钟前
今日总结 2024-12-27
开发语言·前端·javascript
lili-felicity9 分钟前
指针与数组:深入C语言的内存操作艺术
c语言·开发语言·数据结构·算法·青少年编程·c#
大今野22 分钟前
node.js和js
开发语言·javascript·node.js
Just_Paranoid25 分钟前
使用 IDE生成 Java Doc
java·开发语言·ide
ᥬ 小月亮29 分钟前
Js前端模块化规范及其产品
开发语言·前端·javascript
Thomas_YXQ30 分钟前
Unity3D Huatuo:划时代的原生C#热更新技术详解
开发语言·游戏·unity·c#·unity3d
HappyAcmen35 分钟前
青训营-豆包MarsCode技术训练营试题解析四十八
开发语言·python·算法
新知图书37 分钟前
微软Win11内核迎新变,Rust语言助力提升系统安全可靠性
开发语言·microsoft·rust
Zer0_on37 分钟前
数据结构二叉树
开发语言·数据结构