当前位置: 首页 > news >正文

tinyxml2 开源库与 VS2010 结合使用

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

 

一、环境配置

 

1. 下载 tinyxml2

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

2. 在 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>

 

 

2. 控制台输出:

 

plaintext

XML 文件创建成功!

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

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

 

 

关键说明

 

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

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

 

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

http://www.lryc.cn/news/583321.html

相关文章:

  • MySQL8.0基于GTID的组复制分布式集群的环境部署
  • 如何通过配置gitee实现Claude Code的版本管理
  • SpringBoot校园疫情防控系统源码
  • Flink1.20.1集成Paimon遇到的问题
  • stm32Cubmax的配置
  • 微信小程序91~100
  • Pycharm 报错 Environment location directory is not empty 如何解决
  • 基于Spring Boot+Vue的巴彦淖尔旅游网站(AI问答、腾讯地图API、WebSocket及时通讯、支付宝沙盒支付)
  • Ragas的Prompt Object
  • NHibernate案例
  • SAP ERP与Oracle EBS对比,两个ERP系统有什么区别?
  • aichat-core简化 LLM 与 MCP 集成的前端核心库(TypeScript)
  • C#项目 在Vue/React前端项目中 使用使用wkeWebBrowser引用并且内部使用iframe网页外链 页面部分白屏
  • Spring IoC 如何实现条件化装配 Bean?
  • HUAWEI HiCar6.0的新变化
  • 一条Redis命令是如何执行的?
  • C++随机打乱函数:简化源码与原理深度剖析
  • 从零开始学前端html篇2
  • 微信小程序控制空调之微信小程序篇
  • 双esp8266-01s间TCP通讯
  • 图像硬解码和软解码
  • RAM带宽计算及分析
  • 区块链系统开发技术应用构建可信数字生态链
  • 以太坊智能合约核心技术解析与应用实践
  • Android 组件内核
  • NO.2数据结构线性表|线性表|顺序表|链表|单链表|双向链表|循环链表|静态链表|插入|删除
  • Qt-翻金币案例
  • 鸿蒙商城开发:ZKmall开源商城系统特性适配与性能优化
  • upload-labs靶场通关详解:第18关 条件竞争
  • CMake构建项目报错“No CUDA toolset found.”