VC++ XML读写随笔【二】tinyxml创建写入xml文件教程

C++写XML 本文主要介绍:C++中利用TinyXml库写XML文件。 一、TinyXml库配置 详细配置见: http://blog.youkuaiyun.com/hong__fang/article/details/43340191 二、写XML文件程序 1.TinyXml中的一些类: TiXmlBase:整个TinyXML模型的基类。 TiXmlAttribute:对应于XML中的元素的属性。 TiXm 阅读详情

我们使用tinyxml库,生成和解析XML文档。

他是一个小巧的xml库,可以生成和解析xml文档,免费开源,可以直接将源码加载到项目中,适合多种平台。

我们使用tinyxml v1版本。

下载地址:https://sourceforge.net/projects/tinyxml/


把他解压后放到项目的文件夹下



这就是他的所有文件了




在你的项目内新建一个文件筛选器,名为tinyxml,之后把这些文件都添加进去。



这样就配置好了,我们怎么使用呢?

我们首先建立一个这样的代码,一切操作都在test1内进行。

记得声明tinyml.h的头文件

#include "tinyxml/tinyxml.h" //声明头文件
#include <string>
#include <Windows.h>
int test1()
{
	return 0;
}

int main()
{
	test1();
	system("pause");
	return 0;
}


构造一个xml类,让他有声明和root根元素

int test1()
{
	TiXmlDocument xml_doc;  //构造xml文件类
	xml_doc.LinkEndChild(new TiXmlDeclaration("1.0", "GBK", "")); //添加XML声明

	TiXmlElement* xml_root = new TiXmlElement("root");    //构造根元素
	xml_doc.LinkEndChild(xml_root);    //把根元素添加进xml_doc里

	//对于以上代码做一个小说明:LinkEndChild可以链接声明,也可以链接元素。

        xml_doc.SaveFile("xml_doc.xml"); //这样就可以输出啦
        return 0;
}


首先使用TiXmlDocument构造xml文件类,即代码中 xml_doc。

然后使用使用xml_doc的LinkEndChild类函数,链接new出来的TiXmlDeclaration声明类,给他声明部分。

然后使用TiXmlElement构造元素类,即代码中xml_root,他是根元素。

也是用LinkEndChild,链接到xml_doc即可。

<?xml version="1.0" encoding="GBK" ?>
<root />

虽然看起来不太对,"root"没有成对出现,这是因为我们还没有添加元素。

int test1()
{
	TiXmlDocument xml_doc;  //构造xml文件类
	xml_doc.LinkEndChild(new TiXmlDeclaration("1.0", "GBK", "")); //添加XML声明

	TiXmlElement* xml_root = new TiXmlElement("root");    //构造根元素
	xml_doc.LinkEndChild(xml_root);    //把根元素添加进xml_doc里
	//对于以上代码做一个小说明:LinkEndChild可以链接声明,也可以链接元素。
//----------------新----加----入----的----代----码--------------------------------
	TiXmlElement* xml_child = new TiXmlElement("host");//创建名为host一个元素
	xml_root->LinkEndChild(xml_child);//把这个元素添加进root根元素
	xml_child->LinkEndChild(new TiXmlText("www.baidu.com"));//给这个元素添加数据
	
	//下边两行代码,是给这个元素添加属性
	xml_child->SetAttribute("checked", "true");
	xml_child->SetAttribute("station", 1001);
        //对于以上代码做一个小说明:元素类为TiXmlElement,元素数据类为TiXmlText,设置元素属性函数为SetAttribute。使用方法请仔细阅读代码
	
	xml_doc.SaveFile("xml_doc.xml");保存文件
	return 0;
}

和创建root元素一样的类创建xml_child元素。

使用xml_doc的类函数LinkEndChild把新建的xml_child链接进来。

向xml_child添加数据。

SetAttribute即可向xml_child添加属性。

<?xml version="1.0" encoding="GBK" ?>
<root>
    <host checked="true" station="1001">www.baidu.com</host>
</root>

效果看起来不错。


演示一下元素嵌套

int test1()
{
	TiXmlDocument xml_doc;  //构造xml文件类
	xml_doc.LinkEndChild(new TiXmlDeclaration("1.0", "GBK", "")); //添加XML声明

	TiXmlElement* xml_root = new TiXmlElement("root");    //构造根元素
	xml_doc.LinkEndChild(xml_root);    //把根元素添加进xml_doc里
	//对于以上代码做一个小说明:LinkEndChild可以链接声明,也可以链接元素。

	TiXmlElement* xml_child = new TiXmlElement("host");//创建名为host一个元素
	xml_root->LinkEndChild(xml_child);//把这个元素添加进root根元素
	xml_child->LinkEndChild(new TiXmlText("www.baidu.com"));//给这个元素添加数据
	
	//下边两行代码,是给这个元素添加属性
	xml_child->SetAttribute("checked", "true");
	xml_child->SetAttribute("station", 1001);

	TiXmlElement* xml_client = new TiXmlElement("client");	//嵌套元素
	xml_root->LinkEndChild(xml_client);

	TiXmlElement* xml_name = new TiXmlElement("name");	//仔细阅读一下,不过是把new的元素,连接到xml_client而已
	xml_name->LinkEndChild(new TiXmlText("余生皆假期"));
	xml_client->LinkEndChild(xml_name);

	//同上
	TiXmlElement* xml_id = new TiXmlElement("id");
	xml_id->LinkEndChild(new TiXmlText("10000"));
	xml_client->LinkEndChild(xml_id);

	xml_doc.SaveFile("xml_doc.xml");	//保存文件

	//或者转成string
	std::string text;
	text << xml_doc;
	printf("%s\n", text.c_str());
	
	return 0;
	
}

请自行分析源码,效果如下

<?xml version="1.0" encoding="GBK" ?>
<root>
    <host checked="true" station="1001">www.baidu.com</host>
    <client>
        <name>余生皆假期</name>
        <id>10000</id>
    </client>
</root>


值得注意的是,在结尾也可以转化为string,直接用<<操作符即可。我还用printf把他打印一下。






C++利用TinyXML读取XML文件 TinyXML是一个轻量级的C++ XML解析器,它提供了一种简单的方法来解析和操作XML文档。适用于小型XML文件: 尽管TinyXML可以解析和处理XML文件,但它更适用于处理小型XML文件,因为它的设计目标之一是保持简洁和高效。虽然TinyXML功能不如一些更复杂的XML库,但它的简单性和轻量级使得它成为处理小型XML任务的良好选择。而后将下载的XML库文件内的两个头文件单独复制出来,放到一个新建的文件夹include内。开源: TinyXML是开源的,可以在许可证允许的情况下免费使用和修改。 阅读详情

相关推荐

VC++开发者的XML操作库选择指南.zip

可扩展标记语言(XML)是一种标记语言,它定义了一套规则来创建可自描述文档。在VC++开发中,XML扮演了多种角色,尤其是在数据交换、配置文件和数据存储等方面。层级结构:XML文档采用树状层级结构,这种结构适合描述具有层级关系的数据。每个XML元素都可以包含子元素,从而形成嵌套的关系。标记语言:XML是一种标记语言,允许开发者自定义元素标签。这使得XML非常灵活,可以根据应用程序的需求来设计数据模型。文本格式:XML是纯文本格式的,可以使用文本编辑器阅读和编辑。

weixin_35762258的博客 848

VC++ 2019 MFC TinyXML2使用教程/方法详解

一、创建MFC项目 MFCTinyxml2 应用程序类型选择“基于对话框” 主框架样式仅选择“粗框架”,其他样式无需选择 高级功能处全部全部不要选 二、下载源码并复制到MFC项目中 三、创建XML 四、读取XML 五、查询 六、更新 七、删除 ...

刘朋 5077

大数据之VIP(Virtual IP,虚拟IP)负载均衡

VIP(Virtual IP,虚拟IP)负载均衡是一种在计算机网络中常用的技术,用于将网络请求流量均匀地分散到多个服务器上,以提高系统的可扩展性、可靠性和性能。

赵玉的专栏 4124

C++ TinyXml操作(含源码下载)

前言 TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译,使用TinyXML进行C++ XML解析,使用简单,容易上手。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。 DOM模型即文档对象模型,是将整个文档分成多个元素(如书、章、节、段等),并利用树型结构表示这些元素之间的顺序关系以及嵌套包含...

weixin_33904756的博客 430

Prompt Airlines CTF通关实战:从提示词注入到多模态攻击的AI安全攻防演练

提示词注入(Prompt Injection)是当前大语言模型(LLM)应用面临的核心安全威胁之一,其原理在于攻击者通过精心构造的用户输入,覆盖或绕过系统预设的指令,从而操控模型行为。这种攻击手法的技术价值在于揭示了AI系统在理解与执行指令时存在的逻辑边界模糊性,可能导致数据泄露、越权访问等严重风险。在应用场景上,从基础的客服对话到结合视觉识别的多模态系统,都可能成为攻击面。本文以一场名为“Prompt Airlines CTF”的实战挑战为例,深入剖析了包括指令遗忘、上下文注入、工具调用滥用及多模态提示注

aodan5477的博客 523

TDDFT计算软件Octopus学习笔记(二):基态计算(Si)

本文以硅为例,来进行基态计算。

陈啸的博客 7308

C/C++ 使用 tinyxml库 操作XML格式文件(创建、插入、删除、修改、解析)

这里有两种方式,有点奇怪,当使用第一种方式读取xml文件时,xml中有多个子节点Book1时,由于属性都有相同的id、name、price,导致会读取失败,不得已让我搞出了第二种方式去读取进行初始化,这样就没问题!和上面三、添加 的第1步骤一样…和上面三、添加 的第1步骤一样…和上面三、添加 的第1步骤一样…到此,使用tinyxml操作xml文件的教程已经完毕了,相信学到这里的童鞋们应该会如何使用了,那快做项目去吧!代码中使用了很多指针,但是都没有进行释放,为什么呢?

gzq0712的专栏 5640

【OpenClaw从入门到精通】第20篇:OpenClaw实战—从零搭建教育自动化助教系统(作业批改+智能答疑+学情分析)【2026实测】

本文基于OpenClaw开源框架,聚焦教育行业“答疑重复、批改耗时、学情模糊”三大核心痛点,提供从环境部署到功能落地的全流程实操方案。通过整合QQ群交互、代码分析、数据可视化等技能,构建“智能答疑+作业批改+学情分析”的自动化助教系统。系统支持7×24小时群聊答疑、多语言作业自动评审、学情数据周报生成,经实测可使助教工作时间减少60%、作业批改效率提升5-10倍、学情问题识别提前5周。文中包含完整配置步骤、可直接运行的代码示例及避坑指南,兼顾新手入门与进阶实操,帮助教育工作者快速落地自动化工具,从重复劳动中

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1453

vc中tinyxml的使用方法

1.加载文件。<br />TiXmlDocument doc( "demo.xml" );<br />doc.LoadFile();<br />2.<br />void main(void)<br />{<br /> TiXmlDocument doc("example1.xml");<br /> bool loadOkay = doc.LoadFile();<br /> if (loadOkay)<br /> {<br />  printf("/n%s:/n", pFilename);<br />  du

Guix 1215

python ERA-5气象数据NetCDF格式解析(一)

python ERA-5气象数据NetCDF格式解析

weixin_43896283的博客 2638

MongoDB分布式事务实现:两阶段提交、日志复制与冲突解决

MongoDB分布式事务机制解析 本文深入剖析了MongoDB 4.0+版本的分布式事务实现原理,重点分析了其在跨文档/跨集合/跨分片场景下的数据一致性解决方案。核心内容包括: 底层机制:采用改进的两阶段提交协议,通过oplog日志复制实现无中心协调器的事务管理,结合WiredTiger存储引擎和锁机制保障ACID特性。 创新设计:将传统2PC的中心协调功能分散到Primary节点,利用oplog作为事务状态记录,实现自动故障恢复和60秒超时回滚机制。 性能优化:针对大事务、写冲突等常见问题,提出拆分微事务

数据知道的博客 1261

vc++中tinyxml的使用

TinyXml 是一款优秀的C++的 XML 文档的解析器,占用内存少,速度快,但相应的用户程序相应会 比较复杂;下载TinyXml 包的链接http://download.chinaunix.net/download/0013000/12494.shtml 它只有两 个头文件和四个cpp文件,只需要把它们简单地 加到你的项目中就行了; 下面介绍操作方法: XML文档的结构: T

dongyewolong的专栏 2368

ST03N 里看不到 SE38 / SA38?别急,这不是没记录,而是被换了名字

摘要:SAP系统中SE38/SA38事务码在ST03N统计中可能"隐身",因其对话步骤被归集到对应的程序名(如SE38→RSABAPPROGRAM)。ST03N侧重工作负载聚合统计,而STAD提供短期明细记录。正确排查方法是:在ST03N中搜索程序名而非事务码,再通过STAD验证具体使用情况。这一现象在权限整改和审计中易造成误判,建议将程序名纳入常规监控,并区分ST03N(趋势分析)与STAD(事实校验)的不同用途。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 956

vc++中读取xml——tinyxml

<br />vc++中读取xml有几种方式,可视tinyxml算是最简单的了 <br />为了大家更方便的使用,简述一下过程,有问题可以留言: <br />1、下载tinyxml <br />tinyxml,自己在里面找找 <br />解压后包括两部分,tinyxml和一个静态链接库文件xmladapter.lib <br />2、使用tinyxml通常需要把它包含到自己的工程文件中去,可是你也可以选择以下的方式: <br />a、project->settings->选项卡link->category选择

huanghui19860205的专栏 3110

从入门到精通!Arduino 全栈开发深度指南

本文围绕 Arduino 开发撰写全攻略,从基础入门到高级应用层层递进。开篇介绍 Arduino 概念、优势及硬件家族,引导读者完成开发环境搭建与首个 LED 闪烁项目;深入讲解编程语法、I/O 控制及通信协议;详细阐述传感器、模块应用与调试优化技巧;最后以自定义库开发、低功耗设计等高级内容收尾,并给出综合项目案例与产品化思路。无论新手入门,还是开发者进阶,均可从中系统学习 Arduino 知识,掌握从理论到实践的全流程开发技能。

邓邓子的博客 2757

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

XML解析器(TinyXML)的使用

转载自:http://hi.baidu.com/ctrlaltz/blog/item/dae184f7d0704624720eec88.html 参考http://www.cppblog.com/dyj057/archive/2007/01/26/18007.html 我

522

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

tinyxml实例

刚接触xml,现在要在vc里写xml文档,开始入不了门,这个小程序是入门的可以写成xml文档,在运行之前现将tinystr.cpp   tinyxml.cpp  tinyxmlerror.cpp  tinyxmlparser.cpp和tinystr.h   tinyxml.h这几个添加到你的工程中,记得在4个cpp文件前面都加上#include "stdafx.h"这个头文件,这样一个简单的xml

qinzhaohong001的专栏 634

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

c/c++ XML 读写 tinyXML rapidXML slimXML LibXML XMLBooster squashXML

TinyXml读写xml http://blog.youkuaiyun.com/fireway2009/article/details/7322144   linux c xml 读写 http://blog.youkuaiyun.com/zhang_heaven/article/details/7370931 rapidxml,一个快速的xml库,比tinyXML ,slimXML还快

wch.hit的专栏 3245

vc++ tinyxml 读取xml

vc++中读取xml有几种方式,可视tinyxml算是最简单的了 为了大家更方便的使用,简述一下过程,有问题可以留言: 1、下载tinyxml tinyxml,自己在里面找找 解压后包括两部分,tinyxml和一个静态链接库文件xmladapter.lib 2、使用ti

1352

XML解析器(TinyXML)的使用指南

XML解析器(TinyXML)的使用指南 关于XML文件的解析方法的引导,大家可以去试试这个工具(TinyXML) 1.首先下载TinyXML库的文件,这里给出链接,大家自己去下吧,记着要上国际http://prdownloads.sourceforge.net/tinyxml/tinyxml_2_3_4.zip?download 2.下载后解压这个压缩包,把所有的东西放到一个找的着的地方...

我的博客 680

Win10系列:VC++ XML文件解析

Win10系列:VC++ XML文件解析 XML文件按照元素标记来存储数据,通过遍历这些元素标记可以得到XML文件中所保存的数据。在C++/CX的类库中并未定义用于解析XML文件的类,但C++提供了能解析XML文件的框架和类库,如msxml4、libxml、IXMLDOM和TinyXML等,在使用C++/CX编写应用程序时可以通过C++提供的框架和类库来解析XML文件。Ti...

博客 575

vc++中读取xml

vc++中读取xml有几种方式,可视tinyxml算是最简单的了为了大家更方便的使用,简述一下过程,有问题可以留言:1、下载tinyxmltinyxml,自己在里面找找解压后包括两部分,tinyxml和一个静态链接库文件xmladapter.lib2、使用tinyxml通常需要把它包含到自己的工程文件中去,可是你也可以选择以下的方式:a、project->settings-

zhanghulin的专栏 2556

VC++ XML读写随笔【三】tinyxml读取xml文件教程

接着上一篇,我们来读取这样一共xml文件: &lt;?xml version="1.0" encoding="GBK" ?&gt; &lt;root&gt; &lt;host checked="true" station="1001"&gt;www.baidu.com&lt;/host&gt; &lt;client&gt;

nullccc的博客 374

visual c++ tinyxml2

visual c++ tinyxml2 tinyxml2 https://github.com/leethomason/tinyxml2

abc 1765
上一篇: VC++ XML读写随笔【一】xml基本格式
下一篇: VC++ XML读写随笔【三】tinyxml读取xml文件教程
崔佳宇_
崔佳宇_ 优质创作者: 嵌入式与硬件开发技术领域 优质创作者: 嵌入式与硬件开发技术领域
博客等级 码龄10年 1万+粉丝 173原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值