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

相关推荐
十五年专注C++开发3 分钟前
达梦数据库在Linux备份报错 -8003: 缺少本地或者远程归档 解决方案
数据库·c++·dm·备份复原
蓝牙先生8 分钟前
22_backlightLinux内核模块
linux·c语言
yy_xzz20 分钟前
【Linux开发】I/O 复用:select 模型
linux·c++·select
小肝一下27 分钟前
每日两道力扣,day6
数据结构·c++·算法·leetcode·双指针·hot100
ByteCraze27 分钟前
大四双非春招学习记录-K 个一组反转链表
数据结构·学习·链表
深兰科技32 分钟前
俄罗斯机器人与教育机构接连来访深兰科技,加速具身智能与AI合作
人工智能·机器人·具身智能·深兰科技
奶人五毛拉人一块33 分钟前
模板与vector的学习
数据结构·学习·迭代器·vector·模板
ambition2024234 分钟前
【算法详解】飞机降落问题:DFS剪枝解决调度问题
c语言·数据结构·c++·算法·深度优先·图搜索算法
I Promise3436 分钟前
C++ 基础数据结构与 STL 容器详解
开发语言·数据结构·c++