概述:
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:
欢迎大家关注作者在文末评论、点赞、转发以及批评指正!
如果大家有更好的方法或有问题可以在文末评论一起讨论!
共同学习!
共同进步!
文末一句话:
“母在不庆生,父在不留须,饭前不训子,睡前不训妻,师徒不对坐,父子不同席。”