当前位置: 首页 > 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.dtcms.com/a/271018.html

相关文章:

  • LaCo: Large Language Model Pruning via Layer Collapse
  • Spring Boot 扩展点深度解析:设计思想、实现细节与最佳实践
  • tws行业分析
  • Qt:QLineEdit、QTextEdit、QComboBox、QSpinBox、QDateTimeEdit、QDial、QSlider
  • gcc编译器
  • 【macOS】【Swift】不让App采用macOS的外观风格,直接保持白色背景,怎么处理?
  • 静态路由扩展实验
  • 【C++】unordered_set和unordered_map的实现
  • 三、Docker常用命令
  • HUAWEI HiCar6.0的新变化
  • 什么是 AMR 格式?简鹿音频转换器轻松批量转换 AMR 为 MP3
  • windows部署多实例filebeat监控相同路径下文件
  • 前端交互自定义封装类:“双回调自定义信息弹窗”
  • ai之 ubuntu本地安装mineru2.1.0
  • 整合Spring、Spring MVC与MyBatis:构建高效Java Web应用
  • Ubuntu22.04 设置显示存在双屏却无法双屏显示
  • DAS3D: Dual-modality Anomaly Synthesis for 3D Anomaly Detection 论文精读
  • 高通SG882G平台(移远),Ubuntu22编译:1、下载代码
  • 新零售“云化”进化:基于定制开发开源AI智能名片S2B2C商城小程序的探索
  • 中兴通讯首席项目管理专家、PMCoE负责人张宝忠受邀为PMO大会演讲嘉宾
  • redis的命令集合
  • WPF使用WebBrowser 解决href标签target=_blank在浏览器窗口打开新链接而非窗体内部打开的问题
  • Docker高级管理
  • 不深入,则无法共情
  • mysql 可用性的保障机制:主讲主从复制机制
  • Git 详解:从概念,常用命令,版本回退到工作流
  • 【03】MFC入门到精通——MFC 添加控件 设置属性 按钮 文本框
  • 《【第五篇】图片处理自动化:让你的视觉内容更专业!:图片处理基础与批量裁剪》
  • 06每日简报20250709
  • Vue 中mounted 生命周期钩子的执行时机和 v-for 的渲染顺序