tinyxml2 开源库与 VS2010 结合使用

下面是 tinyxml2 开源库与 VS2010 结合使用的简单例子,包含环境配置和基础操作:

一、环境配置

  1. 下载 tinyxml2

从官网(leethomason/tinyxml2)下载源码,解压后得到 tinyxml2.h 和 tinyxml2.cpp 两个文件。

  1. 在 VS2010 中配置

  • 新建空项目(Win32 控制台应用程序)。

  • 将 tinyxml2.h 和 tinyxml2.cpp 复制到项目目录下,右键项目 →"添加"→"现有项",将两个文件添加到项目中。

二、使用示例(创建并读取 XML)

cpp

#include <iostream>

#include "tinyxml2.h"

using namespace tinyxml2;

using namespace std;

int main() {

// 1. 创建 XML 文档

XMLDocument doc;

// 添加声明(<?xml version="1.0" encoding="UTF-8"?>)

XMLDeclaration* decl = doc.NewDeclaration();

doc.InsertFirstChild(decl);

// 2. 创建根节点 <Students>

XMLElement* root = doc.NewElement("Students");

doc.InsertAfterChild(decl, root);

// 3. 添加子节点 <Student> 及属性、内容

XMLElement* student1 = doc.NewElement("Student");

student1->SetAttribute("ID", "001"); // 设置属性

root->InsertEndChild(student1);

XMLElement* name1 = doc.NewElement("Name");

name1->SetText("张三"); // 设置文本内容

student1->InsertEndChild(name1);

XMLElement* age1 = doc.NewElement("Age");

age1->SetText(18);

student1->InsertEndChild(age1);

// 再添加一个学生节点

XMLElement* student2 = doc.NewElement("Student");

student2->SetAttribute("ID", "002");

root->InsertEndChild(student2);

XMLElement* name2 = doc.NewElement("Name");

name2->SetText("李四");

student2->InsertEndChild(name2);

XMLElement* age2 = doc.NewElement("Age");

age2->SetText(20);

student2->InsertEndChild(age2);

// 4. 保存 XML 到文件

doc.SaveFile("Students.xml");

cout << "XML 文件创建成功!" << endl;

// 5. 读取并解析 XML 文件

XMLDocument readDoc;

XMLError err = readDoc.LoadFile("Students.xml");

if (err != XML_SUCCESS) {

cout << "读取 XML 失败!" << endl;

return 1;

}

// 获取根节点

XMLElement* readRoot = readDoc.RootElement();

// 遍历所有 Student 节点

XMLElement* student = readRoot->FirstChildElement("Student");

while (student) {

// 读取属性 ID

const char* id = student->Attribute("ID");

// 读取子节点内容

const char* name = student->FirstChildElement("Name")->GetText();

int age;

student->FirstChildElement("Age")->QueryIntText(&age); // 读取整数

cout << "ID: " << id << ", 姓名: " << name << ", 年龄: " << age << endl;

// 移动到下一个 Student 节点

student = student->NextSiblingElement("Student");

}

return 0;

}

三、运行结果

  1. 程序会生成 Students.xml 文件,内容如下:

xml

<?xml version="1.0" encoding="UTF-8"?>

<Students>

<Student ID="001">

<Name>张三</Name>

<Age>18</Age>

</Student>

<Student ID="002">

<Name>李四</Name>

<Age>20</Age>

</Student>

</Students>

  1. 控制台输出:

plaintext

XML 文件创建成功!

ID: 001, 姓名: 张三, 年龄: 18

ID: 002, 姓名: 李四, 年龄: 20

关键说明

  • 核心类: XMLDocument (文档)、 XMLElement (元素节点)、 XMLAttribute (属性)等。

  • 常用操作: NewElement (创建节点)、 SetAttribute (设置属性)、 SetText (设置文本)、 FirstChildElement (获取子节点)、 SaveFile / LoadFile (保存/加载文件)。

通过以上步骤,即可在 VS2010 中使用 tinyxml2 操作 XML 文件。

相关推荐
一个初入编程的小白29 分钟前
数据结构:二叉树链式结构的实现
数据结构
辰烨chenye3 小时前
LeetCode Hot 100 题解 · 普通数组篇
算法·leetcode·职场和发展
hqyjzsb7 小时前
零 AI 项目经验,学 Python 转型 AI 的正确顺序是什么?
开发语言·人工智能·python·算法·职场和发展·数据挖掘·数据分析
辰烨chenye7 小时前
LeetCode Hot 100 题解 · 二分篇
java·算法·leetcode
微功夫信息技术7 小时前
分层多智能体强化学习驱动的非急救转运公平 - 效率统一调度系统研究与实践
人工智能·学习·算法·动态规划
T1mzhou7 小时前
ARM64 Linux 6.10内核启动流程7-ioremap和readl writel
linux·服务器·c语言
机器人猎头David7 小时前
VLA、世界模型、强化学习,在机器人里分别解决什么问题?
人工智能·机器人·机器人猎头·机器人猎头公司
sanjiaomao3337 小时前
从论文公式到Python实现:用单元测试校验滑动平均算法
python·算法·单元测试
Keven_117 小时前
算法札记:ACM适用的很骚的C++语法(持续更新)
开发语言·c++
乐迪信息8 小时前
如何通过AI防爆摄像机精准判断船舶超速?
大数据·人工智能·算法·安全·目标跟踪