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++介绍

相关推荐
上单带刀不带妹6 分钟前
手写 Vue 中虚拟 DOM 到真实 DOM 的完整过程
开发语言·前端·javascript·vue.js·前端框架
-凌凌漆-1 小时前
【Qt】QStringLiteral 介绍
开发语言·qt
程序员爱钓鱼1 小时前
Go语言项目工程化 — 常见开发工具与 CI/CD 支持
开发语言·后端·golang·gin
小刘同学3211 小时前
C++11 特性
c++·c11新特性
军训猫猫头1 小时前
1.如何对多个控件进行高效的绑定 C#例子 WPF例子
开发语言·算法·c#·.net
真的想上岸啊2 小时前
学习C++、QT---18(C++ 记事本项目的stylesheet)
开发语言·c++·学习
m0_552200822 小时前
《UE5_C++多人TPS完整教程》学习笔记40 ——《P41 装备(武器)姿势(Equipped Pose)》
c++·游戏·ue5
明天好,会的2 小时前
跨平台ZeroMQ:在Rust中使用zmq库的完整指南
开发语言·后端·rust
丁劲犇2 小时前
用 Turbo Vision 2 为 Qt 6 控制台应用创建 TUI 字符 MainFrame
开发语言·c++·qt·tui·字符界面·curse