C++使用TinyXml2解析Xml

article/2025/9/26 1:34:41

1. TinyXml2 简介

TinyXml 一直是一个非常好用的 Xml 解析工具 , 最新的开源版本 TinyXml2 相对于旧版本的 TinyXml 使用更少的内存 , 更快 , 并且使用更少的内存分配 , 现在是所有开发的重点 , 经过良好的测试 , 是您的最佳选择 , 除非您有维护TinyXML-1代码的要求 ;

TinyXml2 使用类似的 APITinyXml1 和相同的丰富的测试用例 , 但解析器的实现是完全重写的 , 使其更适合在游戏中使用 ;

TinyXml2不需要 STL , 但也降低了所有的 STL 支持 , 所有字符串都是查询并设置为 const char * , 这允许使用内部分配器 , 并保持代码更简单 ;

两个解析器共同点 :

  1. 使用类似的API很简单
  2. 基于DOM的解析器
  3. UTF-8 Unicode支持 http://en.wikipedia.org/wiki/UTF-8

TinyXml2 的优点 :

  1. 所有未来开发的重点
  2. 更少的内存分配 (1/10到1/100) , 使用更少的内存 (大约TinyXml1的40%) , 并且更快
  3. 无STL要求
  4. 更现代的C++ , 包括一个正确的命名空间
  5. 适当和有用的处理空白

TinyXML-1 的优点 :

  1. 支持一些C++ STL 约定 : 流和字符串
  2. 非常成熟和调试良好的代码库


2. 在 C++ 中使用 TinyXml2

  1. C++ 中使用 TinyXml2 , 首先去 Github 官网下载源码 https://github.com/leethomason/tinyxml2 , 下载 zip 文件后 , 解压出来

    DownloadZip

  2. 将解压出来文件里面的 tinyxml2.htinyxml2.cpp 文件拷贝到工程目录源码文件夹下 , 在项目中添加这两个文件

    AddToSln

  3. 在代码头文件中引入头文件和命名空间

    #include "tinyxml2.h"
    using namespace tinyxml2;
    
  4. 在代码中使用 TinyXml2 解析文档

    1. Xml 文档如下

      <?xml version="1.0"?>  
      <Group><User><Name>John</Name><Age>18</Age></User>
      </Group>  
      
    2. 代码中载入并解析改文件

      XMLDocument docXml;
      XMLError errXml = docXml.LoadFile("example.xml");
      if (XML_SUCCESS == errXml)
      {XMLElement* elmtRoot = docXml.RootElement();XMLElement *elmtUser = elmtRoot->FirstChildElement("User");XMLElement *elmtName = elmtUser->FirstChildElement("Name");if (elmtName){const char* pContent= elmtName->GetText();printf( "%s", pContent);}XMLElement *elmtAge = elmtName->NextSiblingElement();if (elmtAge){const char* pContent= elmtAge->GetText();printf( "%s", pContent);}
      }
      
    3. 或者直接解析字符串

      XMLDocument docXml;
      char* pXml = "<Item>Hello World</Item>";
      XMLError errXml = docXml.Parse(pXml);
      if (XML_SUCCESS == errXml)
      {XMLElement* elmtRoot = docXml.RootElement();if (elmtRoot){const char* pContent= elmtRoot->GetText();printf( "%s", pContent);}
      }
      

    注意 : 如果命名空间冲突的话 , 可能会导致 XMLDocument 对象不明确 , 使用 tinyxml2::XMLDocument 来使用

个人网站: Github , 欢迎点击给星


http://chatgpt.dhexx.cn/article/iY738P8e.shtml

相关文章

使用tinyxml2库解析xml

tinyxml2简介 tinyxml2是c编写的轻量级的xml解析器&#xff0c;而且是开放源代码的&#xff0c;在一些开源的游戏引擎中用的比较多。源码托管在github上。 源码地址&#xff1a;https://github.com/leethomason/tinyxml2 tinyxml2使用起来非常简单&#xff0c;下载源码后无需…

TinyXml学习笔记

TinyXml学习笔记 张弛<> 注:本文的最新版本可以在下面的地址找到 http://amidiot.512j.com/article/tinyxml/tinyxml_note.htm 一、 TinyXml的特点 TinyXml是一个基于DOM模型的、非验证的轻量级C解释器。 1. SAX和DOM 目前XML的解析主要有两大模型&#…

TinyXml使用详解

本文用一个详细的例子说明了TinyXml的使用方法。如写、查找、插入、替换、加载、遍历等常见操作。 首先简单介绍一下TinyXml,要看详细的在网上搜搜了^_^: 1、TinyXml源代码只有4个cpp文件和2个头文件。 2、首先要理解TinyXml中的各个基本类型之间的关系,看看这个继承图大家…

TinyXML2使用教程

TinyXML2使用教程 原文转自 http://blog.csdn.net/K346K346/article/details/48750417 1.TinyXML2概述 TinyXML2是simple、small、efficient开源的C XML文件解析库&#xff0c;可以很方便的应用到现有的项目之中。非常适合存储简单数据&#xff0c;配置文件&#xff0c;对象…

TinyXML使用方法

TinyXML 使用说明 TinyXML是一个C的XML解析库&#xff0c;网上的评价都不错&#xff0c;是一个轻量级的XML解析库。关于TinyXML使用的文章有很多&#xff0c;而且官方也有完整的文档&#xff0c;这里只是简单把自己使用记录写下来&#xff0c;方便以后查阅。 一个XML文档例子&…

C++ 本地使用tinyxml2解析Xml文件

1、基本介绍 TinyXML2是一个开源、简单、小巧、高效的C XML解析器&#xff0c;它只有一个.h文件和一个.cpp文件组成&#xff0c;可以轻松集成到其它程序中。非常方便我们使用c对xml进行处理。 可以读取、修改和保存的文档对象模型(Document Object Model, DOM)。它不能解析DTD…

快速上手 TinyXML-2 不完全教程

TinyXML-2 不完全教程 XML 作为程序开发中非常常用的数据文档之一&#xff0c;各个语言或是开发环境都有对应的用于处理 XML 文件的库。在 C 语言中&#xff0c;TinyXML-2 就是这样的一个库。 TinyXML-2 是一个简单&#xff0c;小巧&#xff0c;高性能的 C 的 XML 解析器&…

开源库TinyXML2简介及使用

TinyXML2是一个开源、简单、小巧、高效的C XML解析器&#xff0c;它只有一个.h文件和一个.cpp文件组成&#xff0c;可以轻松集成到其它程序中。它解析XML文档并从中构建可以读取、修改和保存的文档对象模型(Document Object Model, DOM)。它不能解析DTD(Document Type Definiti…

c/c++操作xml库-Tinyxml2入门及高级用法

一、概念 TinyXML2是一个开源、简单、小巧、高效的C XML解析器&#xff0c;它只有一个.h文件和一个.cpp文件组成&#xff0c;可以轻松集成到其它程序中。它解析XML文档并从中构建可以读取、修改和保存的文档对象模型(Document Object Model, DOM)。它不能解析DTD(Document Typ…

关于Anaconda卸载干净的问题【已解决】

在卸载anaconda时&#xff0c;为了卸载干净&#xff0c;一般会在win10自带的 应用与功能中选择anaconda 进行卸载。 &#xff0c;也可以用anaconda文件中卸载程序Uninstall-Anaconda3.exe进行卸载。 然后再把相应路径下的剩余文件删掉。 但是&#xff01; 这还不够&#xff0c…

anaconda卸载后重装问题

记录一下anaconda卸载后&#xff0c;重新安装后缺少很多文件&#xff0c;重装后打开Anaconda Navigator&#xff0c;发现内容一片空白&#xff0c;软件也不见了&#xff0c;库也不见了&#xff0c;开始菜单也没有anaconda和anaconda prompt&#xff0c;只有如下很少的文件。网上…

如何彻底卸载Anaconda3

阅览了其他大神的卸载文章后&#xff0c;如 https://blog.csdn.net/qq_40605139/article/details/95249601 这篇就给了我很多指导&#xff0c;但我在运行第一句的 conda install anaconda-clean 后就出错了&#xff0c;提示截图如下&#xff1a; 然后就是各种百度&#xff0c;…

Anaconda卸载后重装过程

文章目录 前言一、卸载二、删除注册表三、下载安装包四、安装五、改环境变量六、检验参考文章 前言 因为之前装虚拟机的时候清理磁盘被迫卸掉anaconda&#xff0c;现在又要用jupyter notebook写作业&#xff0c;所以重新装了一遍&#xff0c;记录一下过程备用&#xff0c;也是…

anaconda卸载后重装的悲剧

在经历了无比绝望的一天后&#xff0c;我终于在意志消磨完的最后一刻成功完成了anaconda的卸载重装&#xff0c;这一天过的可以说是非常绝望了。上午还在开开心心的准备下载pytorch库进行学习&#xff0c;结果在更新依赖库的时候没有使用虚拟环境结果导致anaconda崩了&#xff…

CentOS安装/卸载Anaconda(图文详解)

目录 一、Anaconda下载 二、安装Anaconda 三、添加环境 四、卸载 1.删除anaconda文件目录 2.清理.bashrc中的Anaconda路径 一、Anaconda下载 众所周知的原因&#xff0c;从官网下载Anaconda非常慢&#xff0c;因此为了加速下载&#xff0c;这里我们采取清华源下载。 不…

Anaconda安装、查看、卸载第三方库

Anaconda安装第三方库&#xff1a; 下载第三方库&#xff1a;下载地址&#xff1a;https://www.lfd.uci.edu/~gohlke/pythonlibs/ 1、CtrlF 查找 2、下载&#xff0c;点击即可&#xff0c;注意下载的文件要与python环境相匹配 3、将下载的 .whl文件放入...yourpath....\Ana…

恢复anaconda环境, 卸载anaconda, 重装anaconda

在重装anaconda前思考一下是因为什么原因才要重装&#xff0c;如果是因为自己原先的配置好的环境变量在更新时候错乱了&#xff0c;其实可以通过回滚来回复的。 回滚 如果只是为了回复anaconda的环境&#xff0c;其实可以通过命令首先查看anaconda的 环境的历史记录&#xff0…

conda 的安装和卸载

conda 的安装和卸载 针对 ubuntu20.04 ubuntu20.04 是 “西柚云” 主要使用的操作系统 西柚云官网 文章目录 conda 的安装和卸载安装卸载重装 安装 下载 conda 的安装脚本&#xff08;这里使用清华大学的镜像&#xff09; cd ~ # 推荐将 conda 安装在家目录下 wget -c https…

彻底卸载并重装Anaconda环境与Python的方法

本文介绍在Windows平台下&#xff0c;彻底删除Anaconda环境与其自带Python版本&#xff0c;并进行重新安装的方法。 最近&#xff0c;由于原有Anaconda环境中的部分第三方库出现了冲突的情况&#xff0c;且基于“Anaconda Prompt (anaconda3)”也无法升级Anaconda与相关库了&am…

[转载] 怎样彻底卸载anaconda?

彻底卸载anaconda的方法&#xff1a;1、安装Anaconda-Clean package&#xff1b;2、执行【anaconda-clean --yes】命令&#xff1b;3、运行Uninstall-Anaconda3.exe程序即可。 1、安装 Anaconda-Clean package 记得要以管理员身份打开 打开 Anaconda Prompt&#xff0c; 输…