TinyXML是什么?
TinyXML是一个轻量级的C++ XML解析器,它提供了一种简单的方法来解析和操作XML文档。TinyXML被设计为易于使用和集成到C++项目中,并且非常适合处理小型XML文件。
以下是TinyXML的一些主要特点和优点:
轻量级: TinyXML的设计目标之一是保持代码库的小巧简洁,因此它非常适合用于嵌入式系统或具有资源限制的环境。
简单易用: TinyXML提供了简单直观的API,使得解析和操作XML文档变得容易。它的API设计使得开发人员可以快速上手并完成XML处理任务。
跨平台性: TinyXML是跨平台的,可以在各种操作系统上运行,包括Windows、Linux和Mac OS等。
开源: TinyXML是开源的,可以在许可证允许的情况下免费使用和修改。
支持XML解析和生成: TinyXML支持解析XML文档,并且可以将XML数据写入到文件或内存中。
适用于小型XML文件: 尽管TinyXML可以解析和处理XML文件,但它更适用于处理小型XML文件,因为它的设计目标之一是保持简洁和高效。
虽然TinyXML功能不如一些更复杂的XML库,但它的简单性和轻量级使得它成为处理小型XML任务的良好选择。
下载:TinyXML download | SourceForge.net
打开下载后的文件,将下面六个文件复制,两个头文件,四个cpp文件

下面我会通过静态库的形式调用TinyXML库。
用VS新建一个空白工程
将刚刚复制的六个文件放入该工程中

修改项目属性,改为lib静态库

点击生成解决方案,提示成功即可

打开工程目录,并返回上一级

找到X64文件

新建一个文件夹,命名为lib, 复制**.lib**文件,放入lib文件夹中

而后将下载的XML库文件内的两个头文件单独复制出来,放到一个新建的文件夹include内

最后我们现在就会得到两个文件夹

现在我们新建一个工程,在VC++目录内修改包含目录和库目录
包含目录为刚刚我们新建的include文件夹
库目录为刚刚新建的Lib文件夹

最后在"链接器"---"输入"---附加依赖项
将附加依赖项改为我们lib文件夹内的 .lib文件的绝对路径
比如说:Z:\WorkPlace\test-0001\lib\test-0001.lib

代码测试:
测试所需的文件:
链接: https://pan.baidu.com/s/1uV3W7z2C3IDYBubkV2ZC_Q?pwd=dnkm 提取码: dnkm 复制这段内容后打开百度网盘手机App,操作更方便哦
--来自百度网盘超级会员v5的分享
cpp
#include "tinyxml.h"
#include <iostream>
int main() {
//读取XML文件
TiXmlDocument doc("Z:\\XML1.xml"); //
if (!doc.LoadFile()) {
std::cerr << "Failed to load file" << std::endl;
return -1;
}
TiXmlElement* root = doc.RootElement(); // 获取根元素
if (!root) {
std::cerr << "Failed to find root element" << std::endl;
return -1;
}
// 直接获取<params>元素
TiXmlElement* params = root->FirstChildElement("params");
if (params) {
// 遍历<params>下的所有子元素
for (TiXmlElement* param = params->FirstChildElement(); param; param = param->NextSiblingElement()) {
const char* paramName = param->Value(); // 获取元素名称
const char* paramValue = param->GetText(); // 获取元素的文本内容
// 使用printf输出
printf("%s: %s\n", paramName, paramValue);
}
}
else {
std::cerr << "No <params> element found" << std::endl;
}
return 0;
}
测试结果:
至此,我们调用TinyXML库读取XML文件的过程就结束了。