当前位置: 移动技术网 > IT编程>开发语言>C/C++ > C++生成和解析XML文件

C++生成和解析XML文件

2019年10月16日  | 移动技术网IT编程  | 我要评论

使命召唤9注册表补丁,电影苹果被删片段,中国新歌声第二期直播

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如下:

file

解析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"获取源码
file

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网