C++利用TinyXML读取XML文件

TinyXML是什么?
       TinyXML是一个轻量级的C++ XML解析器,它提供了一种简单的方法来解析和操作XML文档。TinyXML被设计为易于使用和集成到C++项目中,并且非常适合处理小型XML文件。

 以下是TinyXML的一些主要特点和优点:

轻量级: TinyXML的设计目标之一是保持代码库的小巧简洁,因此它非常适合用于嵌入式系统或具有资源限制的环境。

简单易用: TinyXML提供了简单直观的API,使得解析和操作XML文档变得容易。它的API设计使得开发人员可以快速上手并完成XML处理任务。

跨平台性: TinyXML是跨平台的,可以在各种操作系统上运行,包括Windows、Linux和Mac OS等。

开源: TinyXML是开源的,可以在许可证允许的情况下免费使用和修改。

支持XML解析和生成: TinyXML支持解析XML文档,并且可以将XML数据写入到文件或内存中。

适用于小型XML文件: 尽管TinyXML可以解析和处理XML文件,但它更适用于处理小型XML文件,因为它的设计目标之一是保持简洁和高效。

       虽然TinyXML功能不如一些更复杂的XML库,但它的简单性和轻量级使得它成为处理小型XML任务的良好选择。

下载:TinyXML download | SourceForge.net

打开下载后的文件,将下面六个文件复制,两个头文件,四个cpp文件

下面我会通过静态库的形式调用TinyXML库。

用VS新建一个空白工程

将刚刚复制的六个文件放入该工程中

修改项目属性,改为lib静态库

点击生成解决方案,提示成功即可

打开工程目录,并返回上一级

找到X64文件

新建一个文件夹,命名为lib, 复制.lib文件,放入lib文件夹中

而后将下载的XML库文件内的两个头文件单独复制出来,放到一个新建的文件夹include内

最后我们现在就会得到两个文件夹

现在我们新建一个工程,在VC++目录内修改包含目录和库目录

包含目录为刚刚我们新建的include文件夹

库目录为刚刚新建的Lib文件夹

最后在“链接器“---”输入“---附加依赖项

将附加依赖项改为我们lib文件夹内的 .lib文件的绝对路径

比如说:Z:\WorkPlace\test-0001\lib\test-0001.lib

代码测试:

测试所需的文件:

链接: https://pan.baidu.com/s/1uV3W7z2C3IDYBubkV2ZC_Q?pwd=dnkm 提取码: dnkm 复制这段内容后打开百度网盘手机App,操作更方便哦 
--来自百度网盘超级会员v5的分享

#include "tinyxml.h"
#include <iostream>int main() {//读取XML文件TiXmlDocument doc("Z:\\XML1.xml"); // if (!doc.LoadFile()) {std::cerr << "Failed to load file" << std::endl;return -1;}TiXmlElement* root = doc.RootElement(); // 获取根元素if (!root) {std::cerr << "Failed to find root element" << std::endl;return -1;}// 直接获取<params>元素TiXmlElement* params = root->FirstChildElement("params");if (params) {// 遍历<params>下的所有子元素for (TiXmlElement* param = params->FirstChildElement(); param; param = param->NextSiblingElement()) {const char* paramName = param->Value();  // 获取元素名称const char* paramValue = param->GetText(); // 获取元素的文本内容// 使用printf输出printf("%s: %s\n", paramName, paramValue);}}else {std::cerr << "No <params> element found" << std::endl;}return 0;
}

测试结果:

至此,我们调用TinyXML库读取XML文件的过程就结束了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/14437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OSPF问题

.ospf 选路 域内 --- 1类&#xff0c;2类LSA 域间 --- 3类LSA 域外 --- 5类&#xff0c;7类LSA --- 根据开销值的计算规则不同&#xff0c;还分为类型1和类型2 ospf 防环机制 区域内防环&#xff1a;在同一OSPF区域内&#xff0c;所有路由器通过交换链路状态通告&#xff…

VUE面试题(3)--vue常见面试题

1.vue优点 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。 …

226.翻转二叉树

翻转一棵二叉树。 思路&#xff1a; 指针做交换 用递归&#xff08;前序or后序&#xff0c;中序不行&#xff09; 前序&#xff1a;中左右 遍历到“中”的时候&#xff0c;交换它的左右孩子 然后分别对它的左孩子和右孩子使用“交换函数”&#xff08;定义的&#xff09;&a…

【网络版本计算器的实现】

本章重点 理解应用层的作用, 初识HTTP协议理解传输层的作用, 深入理解TCP的各项特性和机制对整个TCP/IP协议有系统的理解对TCP/IP协议体系下的其他重要协议和技术有一定的了解学会使用一些分析网络问题的工具和方法 ⭐注意!! 注意!! 注意!! 本课是网络编程的理论基础.是一个服务…

零基础学Java第二十二天之迭代器 Iterator

迭代器 Iterator 的理解和相关集合 使用 1、理解 迭代器&#xff08;Iterator&#xff09;是设计模式中的一种&#xff0c;它允许程序员遍历容器&#xff08;例如列表、集合等&#xff09;中的元素&#xff0c;而无需了解容器底层的实现细节。在编程中&#xff0c;迭代器提供了…

​第18章:JDK8-17新特性

1. 新特性概述 > 角度1&#xff1a;新的语法规则 &#xff08;多关注&#xff09;比如&#xff1a;lambda表达式、enum、annotation、自动拆箱装箱、接口中的默认方法和静态方法、switch表达式、record等> 角度2&#xff1a;增加、过时、删除API比如&#xff1a;新的日期…

《子数整数》

描述 对于一个五位数a1​a2​a3​a4​a5​&#xff0c;可将其拆分为三个子数&#xff1a; sub1​a1​a2​a3​ sub2​a2​a3​a4​ sub3​a3​a4​a5​ 例如&#xff0c;五位数20207可以拆分成 sub1​202 sub2​020(20) sub3​207 现在给定一个正整数K&#xff0c;要求你编程求…

【系统架构师】-论文-系统安全性与保密性设计

1、摘要: 2018 年初&#xff0c;我所在的公司为一票务公司开发开票业务平台的建设。我在该项目中担任系统架构设计师的职务&#xff0c;主要负责设计平台系统架构和安全体系架构。该平台以采用 B/S 架构服务用户&#xff0c;采用”平台应用”的模式解决现有应用单机独立开票的模…

【YOLOv5/v7改进系列】替换激活函数为SiLU、ReLU、LeakyReLU、FReLU、PReLU、Hardswish、Mish、ELU等

一、导言 激活函数在目标检测中的作用至关重要&#xff0c;它们主要服务于以下几个关键目的&#xff1a; 引入非线性&#xff1a;神经网络的基本构建块&#xff08;如卷积层、全连接层等&#xff09;本质上是线性变换&#xff0c;而激活函数通过引入非线性&#xff0c;使得网络…

urllib3 发起https请求时报错 certificate verify failed

情况描述 近期需要访问https的一个API接口同步数据&#xff0c;在办公主机完成urllib3初步的测试以后&#xff0c;到测试环境验证发现无法请求&#xff0c;报错&#xff1a; 提示&#xff1a;解决办法可以直接到第四节查看 一、提示 SSL 认证失败 OpenSSL.SSL.Error: [(SSL …

保安维稳,四信以科技构筑高速公路安全智慧防线

近日&#xff0c;广东梅大高速发生严重塌方事故&#xff0c;造成了严重的人员伤亡和财产损失。这一事件在公众心中敲响了安全的警钟&#xff0c;再次引起了公众对于交通设施运营安全性的重点关注。 国务院安委会办公室和国家防灾减灾救灾委员会办公室等主管机构先后印发紧急通知…

Spring Security整合Gitee第三方登录

文章目录 学习链接环境准备1. 搭建基本web应用引入依赖ThirdApp启动类创建index页面application.yml配置访问测试 2. 引入security引入依赖ProjectConfig访问测试 第三方认证简介注册gitee客户端实现1引入依赖application.yml配置文件创建index.html页面启动类InfoControllerPr…

【数学建模】储药柜的设计

2014高教社杯全国大学生数学建模竞赛D题目 题目描述 储药柜的结构类似于书橱&#xff0c;通常由若干个横向隔板和竖向隔板将储药柜分割成若干个储药槽(如图1所示)。为保证药品分拣的准确率&#xff0c;防止发药错误&#xff0c;一个储药槽内只能摆放同一种药品。药品在储药槽…

Python闭包探索,释放函数记忆的秘术

引言 hello&#xff0c;大家好&#xff0c;我是一点&#xff0c;专注于Python编程&#xff0c;如果你也对感Python感兴趣&#xff0c;欢迎关注交流。 希望可以持续更新一些有意思的文章&#xff0c;如果觉得还不错&#xff0c;欢迎点赞关注&#xff0c;有啥想说的&#xff0c;可…

docker搭建gitlab及默认密码修改及配置修改

推荐官方文档 https://docs.gitlab.com/17.0/ee/install/docker.html 我使用的是docker run的方式&#xff0c;官方文档后面有docker-compose、swarm、k8s的部署文档 版本说明 1&#xff1a;可以部署gitlab-ce社区版和gitlab-ee企业版&#xff0c;然后&#xff0c;鉴于是个人…

Mysql总结2

Mysql慢优化 在mysql中&#xff0c;long_query_time的值为10&#xff0c;当sql语句执行的时间超过这个数值时&#xff0c;则会被记录到慢查询日志中。 Mysql语句查询流程 1、客户端发送sql语句到服务端&#xff1b; 2、服务端查看是否打开了缓存&#xff0c;若缓存打开&…

AIGC绘画设计基础-建筑设计应用

一、AI及AIGC 对于AI大家都不陌生&#xff0c;但是AIGC这个概念好多人其实不大清楚。“AI”是指人工智能技术本身&#xff0c;而“AIGC”是指基于人工智能技术而生成的内容。 生成式人工智能——AIGC&#xff08;Artificial Intelligence Generated Content&#xff09;&…

近邻算法详解

近邻算法&#xff08;Nearest Neighbor Algorithm&#xff09;&#xff0c;也称为K-近邻算法&#xff08;K-Nearest Neighbors&#xff0c;KNN&#xff09;&#xff0c;是一种基本的分类和回归方法。它的工作原理非常直观&#xff1a;通过测量不同特征点之间的距离来进行预测。…

使用CommandLine库创建.NET命令行应用

CommandLine是一个.NET库&#xff0c;用于创建命令行应用程序。它提供了一种简单的方法来解析命令行参数&#xff0c;并且可以帮助您构建一个功能强大的命令行界面。在本文中&#xff0c;我们将介绍如何使用CommandLine库创建.NET命令行应用程序。 1. 背景 在.NET开发中&#…