C++生成和解析XML文件
程序员文章站
2022-05-22 16:45:39
1.xml 指可扩展标记语言(EXtensible Markup Language) 2.xml 是一种标记语言,类似html 3.xml 的设计宗旨是传输数据,而非显示数据 4.xml 标签没有被预定义。需要自行定义标签 XML与HTML区别 1.xml 不是 html 的替代。 2.xml 和 ......
1.xml 指可扩展标记语言(extensible markup language)
2.xml 是一种标记语言,类似html
3.xml 的设计宗旨是传输数据,而非显示数据
4.xml 标签没有被预定义。需要自行定义标签
xml与html区别
1.xml 不是 html 的替代。
2.xml 和 html 为不同的目的而设计:
3.xml 被设计为传输和存储数据,其焦点是数据的内容。
4.html 被设计用来显示数据,其焦点是数据的外观。
5.html 旨在显示信息,而 xml 旨在传输信息。
第三方库
xml第三方解析库,选用tinyxml,tinyxml也是一个开源的解析xml解析库,使用简单正如其名,用于c++开发,支持windows和linux。tinyxml通过dom模型遍历和分析xml。
官网地址:
生成xml文件
tixmldocument xmldocument; // 添加xml声明 xmldocument.linkendchild(new tixmldeclaration( "1.0", "gbk", "" )); // 添加根元素 tixmlelement * xmlroot = new tixmlelement("root"); xmldocument.linkendchild(xmlroot); //根元素下添加子元素1 tixmlelement* xmlchild1 = new tixmlelement("name"); xmlroot->linkendchild(xmlchild1); xmlchild1->linkendchild(new tixmltext("woniu")); xmlchild1->setattribute("id", "0001");//设置属性 //根元素下添加子元素2 tixmlelement* xmlchild2 = new tixmlelement("student"); xmlroot->linkendchild(xmlchild2); tixmlelement* xmlchild2_01 = new tixmlelement("name"); xmlchild2->linkendchild(xmlchild2_01); xmlchild2_01->linkendchild(new tixmltext("woniu201")); tixmlelement* xmlchild2_02 = new tixmlelement("classes"); xmlchild2->linkendchild(xmlchild2_02); xmlchild2_02->linkendchild(new tixmltext("86")); //保存xml文件 xmldocument.savefile("woniu.xml");
生成xml如下:
解析xml文件
tixmldocument xmldocument; if (!xmldocument.loadfile("woniu.xml")) { return -1; } //根节点 tixmlelement* xmlroot = xmldocument.rootelement(); if (xmlroot == null) { return -1; } //获取子节点信息1 tixmlelement* xmlnode1name = xmlroot->firstchildelement("name"); const char* node1name = xmlnode1name->gettext(); const char* node1attid = xmlnode1name->attribute("id"); //获取子节点信息2 tixmlelement* xmlnode2stu = xmlroot->firstchildelement("student"); tixmlelement* xmlnode2_name = xmlnode2stu->firstchildelement("name"); tixmlelement* xmlname2_classes = xmlnode2stu->firstchildelement("classes"); const char* node2name = xmlnode2_name->gettext(); const char* node2classes = xmlname2_classes->gettext();
关注下面公众号,回复"101"获取源码