C++之tintxml2库读取Xml示例

概述:

tintxml2是一个开源、简单、小巧、高效的C++ XML解析器,它只有一个.h文件和一个.cpp文件组成,可以轻松集成到其它程序中。它解析XML文档并从中构建可以读取、修改和保存的文档对象模型(Document Object Model, DOM)。它不能解析DTD(Document Type Definitions, 文档类型定义)或XSL(eXtensible Stylesheet Language, 扩展样式表语言)。在tintxml2中,XML数据被解析为可以浏览和操作的C++对象,然后写入磁盘和其它输出流。它不依赖于C++的STL。
此库已上传资源大家可去下载,或点击关注私聊。

代码示例:


void PipeRouting::init_Xml()
{
//判断字符串是否合法
str = "D:\text.xml"
if (str.empty())
		return;
	//判断xml是否合法
	tinyxml2::XMLDocument doc;
	if (doc.LoadFile(str.c_str()) != tinyxml2::XML_SUCCESS)
		return;
		//根节点
	tinyxml2::XMLElement* root = doc.RootElement();
	if (!root)
		return;

	tinyxml2::XMLElement* equipment = root->FirstChildElement("Equipment");
	while (equipment)
	{
		std::string strKey = equipment->Attribute("Type");
		const tinyxml2::XMLElement*  group = equipment->FirstChildElement("Group");
		while (group)
		{
			const tinyxml2::XMLElement* nole = group->FirstChildElement("Nole");
			vec_NozzRulesInfo vec_NozzRulesInfo;
			while (nozzle)
			{
				Info info;
				info.type = nole->Attribute("Type");
				info.Caltion= nole->Attribute("Caltion");
				info.Orition= nole->Attribute("Orition");
				vec_Info.push_back(info);
				nozzle = nole->NextSiblingElement();
			}
			group = group->NextSiblingElement();
			map_Info.insert(std::make_pair(strKey, vec_Info));
		}
		equipment = equipment->NextSiblingElement();
	}
}

Xml结构示例:

<EquipNozzRules StandardType="q" Users="w" Date="2020-11-23">
   <Equipment Type="P" Max="*">
		<Group Orition = "NSEW" Max="*">
			<Nozzle Type="I" Caltion="" Orition="Z" Max="*"/>
			<Nozzle Type="U" Caltion="" Orition="x"  Max="*"/>
			<Nozzle Type="C" Caltion="" Orition="s"  Max="*"/>
        </Group>
    </Equipment>
	<Equipment Type="T" Max="*">
        <Group Orition = "NSEW" Max="*">
            <Nole Type="UP" Caltion="UP" Orition="UP" Max="*"/>
            <Nole Type="E" Caltion="Z" Orition="E" Max="*"/>
			<Nole Type="H" Caltion="Z" Orition="E" Max="*"/>
        </Group>
    </Equipment>
    <Equipment Type="V" Max="*">
        <Group Orition = "NSEW" Max="*">
            <Nole Type="U" Caltion="U" Orition="P" Max="1"/>
            <Nole Type="H" Caltion="Z" Orition="N" Max="1"/>
            <Nole Type="Z" Caltion="H" Orition="N" Max="1"/>
        </Group>
    </Equipment>
    <Equipment Type="Horiz">
        <Group Orition = "NSEW">
			<Nole Type="S1" Caltion="S1UP" Orition="P" Max="1"/>
            <Nole Type="S2" Caltion="S1DN" Orition="N" Max="1"/>
            <Nole Type="S3" Caltion="S2UP" Orition="U" Max="1"/>
        </Group>
    </Equipment>
</EquipNozzRules>

over:

欢迎大家关注作者在文末评论、点赞、转发以及批评指正!
如果大家有更好的方法或有问题可以在文末评论一起讨论!
共同学习!
共同进步!

文末一句话:

“母在不庆生,父在不留须,饭前不训子,睡前不训妻,师徒不对坐,父子不同席。”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值