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 分钟前
机器学习之无监督学习算法大总结
学习·算法·机器学习
神龙斗士2401 小时前
Java 数组的定义与使用
java·开发语言·数据结构·算法
Y.O.U..1 小时前
力扣HOT100-跳跃游戏II
算法·leetcode
我叫黑大帅1 小时前
什么是 mmap?
linux·c++·操作系统
hn小菜鸡1 小时前
LeetCode 3132.找出与数组相加的整数 II
算法·leetcode·职场和发展
微笑尅乐1 小时前
数组模拟加法——力扣66.加一
算法·leetcode·职场和发展
玖笙&1 小时前
✨WPF编程基础【1.2】:XAML中的属性
c++·wpf·visual studio
_不会dp不改名_2 小时前
leetcode_146 LRU缓存
算法·leetcode·缓存
Z_z在努力2 小时前
【数据结构】队列(Queue)全面详解
java·开发语言·数据结构
举焰2 小时前
VSCode+MSVC+Qmake环境搭建笔记
c++·ide·笔记·vscode·msvc·qt5·qmake