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 文件。

相关推荐
凌肖战11 分钟前
力扣网编程150题:加油站(贪心解法)
算法·leetcode·职场和发展
吃着火锅x唱着歌11 分钟前
LeetCode 3306.元音辅音字符串计数2
算法·leetcode·c#
不見星空15 分钟前
【leetcode】1751. 最多可以参加的会议数目 II
算法·leetcode
不見星空16 分钟前
leetcode 每日一题 3439. 重新安排会议得到最多空余时间 I
算法·leetcode
SsummerC17 分钟前
【leetcode100】下一个排列
python·算法·leetcode
WZF-Sang22 分钟前
计算机网络基础——1
网络·c++·git·学习·计算机网络·智能路由器
black_blank36 分钟前
st表 && csp37 第四题 集体锻炼
java·数据结构·算法
默凉37 分钟前
C++ 虚函数(多态,多重继承,菱形继承)
开发语言·c++
我爱Jack39 分钟前
Java List 使用详解:从入门到精通
java·开发语言·数据结构
秋说1 小时前
【PTA数据结构 | C语言版】在顺序表 list 的第 i 个位置上插入元素 x
c语言·数据结构·list