首页 > 软件开发 > 编程语言 >

C++之如何使用tinyxml库读取XML文件

来源:互联网 2023-03-17 00:18:20 版权归原作者所有,如有侵权,请联系我们

C 如何使用tinyxml库读取XML文件呢?接下来小编就为大家分享一下C 是如何使用tinyxml库读取XML文件的。C4P办公区 - 实用经验教程分享!

C  之如何使用tinyxml库读取XML文件C4P办公区 - 实用经验教程分享!

工具/原料

  • C 、tinyxml库、XML文件

方法/步骤

  • 1

    下载tinyxml库,这里使用的是tinyxml2_6_2版本。C4P办公区 - 实用经验教程分享!

    C  之如何使用tinyxml库读取XML文件C4P办公区 - 实用经验教程分享!

  • 2

    解压tinyxml2_6_2,然后在该目录下找到这六个文件。C4P办公区 - 实用经验教程分享!

    C  之如何使用tinyxml库读取XML文件C4P办公区 - 实用经验教程分享!

  • 3

    把这六个文件放在你新建工程main.cpp目录下C4P办公区 - 实用经验教程分享!

    C  之如何使用tinyxml库读取XML文件C4P办公区 - 实用经验教程分享!

  • 3此文章非法爬取自百度经验
  • 4

    然后把这六个文件导入vs2013编译器中C4P办公区 - 实用经验教程分享!

    C  之如何使用tinyxml库读取XML文件C4P办公区 - 实用经验教程分享!

  • 5

    新建task3.cpp文件C4P办公区 - 实用经验教程分享!

    C  之如何使用tinyxml库读取XML文件C4P办公区 - 实用经验教程分享!

  • 6

    把#include"tinystr.h"和#include"tinyxml.h"这两个头文件添加进去C4P办公区 - 实用经验教程分享!

    C  之如何使用tinyxml库读取XML文件C4P办公区 - 实用经验教程分享!

  • 7

    把测试代码写入task3.cpp中。C4P办公区 - 实用经验教程分享!

    测试代码如下:C4P办公区 - 实用经验教程分享!

    #include"tinystr.h"C4P办公区 - 实用经验教程分享!

    #include"tinyxml.h"C4P办公区 - 实用经验教程分享!

    #includeiostream>C4P办公区 - 实用经验教程分享!

    using namespace std;C4P办公区 - 实用经验教程分享!

    #define SUCCESS 1C4P办公区 - 实用经验教程分享!

    #define FAILED 0C4P办公区 - 实用经验教程分享!

    int loadXml();C4P办公区 - 实用经验教程分享!

    int main()C4P办公区 - 实用经验教程分享!

    {C4P办公区 - 实用经验教程分享!

    if (loadXml())C4P办公区 - 实用经验教程分享!

    {C4P办公区 - 实用经验教程分享!

    getchar(); return 1;C4P办公区 - 实用经验教程分享!

    }C4P办公区 - 实用经验教程分享!

    getchar();C4P办公区 - 实用经验教程分享!

    return 0;C4P办公区 - 实用经验教程分享!

    C4P办公区 - 实用经验教程分享!

    C4P办公区 - 实用经验教程分享!

    }C4P办公区 - 实用经验教程分享!

    int loadXml()C4P办公区 - 实用经验教程分享!

    {C4P办公区 - 实用经验教程分享!

    //创建两个个xml文档对象,一个为读取,一个为输出C4P办公区 - 实用经验教程分享!

    TiXmlDocument *inXml = new TiXmlDocument();C4P办公区 - 实用经验教程分享!

    TiXmlDocument *outXml = new TiXmlDocument();C4P办公区 - 实用经验教程分享!

    C4P办公区 - 实用经验教程分享!

    //加载xml文件C4P办公区 - 实用经验教程分享!

    if (!inXml->LoadFile("a.xml")) //判断XML文件是否加载成功C4P办公区 - 实用经验教程分享!

    {C4P办公区 - 实用经验教程分享!

    cerr inXml->ErrorDesc() endl;C4P办公区 - 实用经验教程分享!

    return 0;C4P办公区 - 实用经验教程分享!

    }C4P办公区 - 实用经验教程分享!

    //定义根节点,记录xml文件的起始节点C4P办公区 - 实用经验教程分享!

    TiXmlElement *inRoot = inXml->FirstChildElement(); //root指向xml文档的第一个节点C4P办公区 - 实用经验教程分享!

    inXml->Value();//获取的值为文件名C4P办公区 - 实用经验教程分享!

    //定义根节点并连接,将输入的根节点传给输出的根节点C4P办公区 - 实用经验教程分享!

    TiXmlElement *outRoot = new TiXmlElement(inRoot->Value());C4P办公区 - 实用经验教程分享!

    outXml->LinkEndChild(outRoot);C4P办公区 - 实用经验教程分享!

    C4P办公区 - 实用经验教程分享!

    if (NULL == inRoot) //判断文件是否有内容C4P办公区 - 实用经验教程分享!

    {C4P办公区 - 实用经验教程分享!

    cerr "No root element !!!" endl;C4P办公区 - 实用经验教程分享!

    inXml->Clear();C4P办公区 - 实用经验教程分享!

    return 0;C4P办公区 - 实用经验教程分享!

    }C4P办公区 - 实用经验教程分享!

    //循环遍历每个节点C4P办公区 - 实用经验教程分享!

    for (TiXmlElement *inElem = inRoot->FirstChildElement(); inElem != NULL; inElem = inElem->NextSiblingElement())C4P办公区 - 实用经验教程分享!

    {C4P办公区 - 实用经验教程分享!

    TiXmlElement *outElem = new TiXmlElement(inElem->Value());C4P办公区 - 实用经验教程分享!

    outRoot->LinkEndChild(outElem);C4P办公区 - 实用经验教程分享!

    const char *name = inElem->Value();//获取源文件中子节点的名字C4P办公区 - 实用经验教程分享!

    outElem->SetValue(name); //设置目的文件子节点的名字C4P办公区 - 实用经验教程分享!

    //获取源文件的属性,设置目标文件的属性C4P办公区 - 实用经验教程分享!

    const char *rName = inElem->Attribute("name");C4P办公区 - 实用经验教程分享!

    outElem->SetAttribute("name", rName);C4P办公区 - 实用经验教程分享!

    const char *rType = inElem->Attribute("type");C4P办公区 - 实用经验教程分享!

    outElem->SetAttribute("type", rType);C4P办公区 - 实用经验教程分享!

    const char *rSize = inElem->Attribute("size");C4P办公区 - 实用经验教程分享!

    outElem->SetAttribute("size", rSize);C4P办公区 - 实用经验教程分享!

    const char *rOdd = inElem->Attribute("odd");C4P办公区 - 实用经验教程分享!

    outElem->SetAttribute("odd", rOdd);C4P办公区 - 实用经验教程分享!

    if (strcmp(name, "0"))//name值是否为空C4P办公区 - 实用经验教程分享!

    {C4P办公区 - 实用经验教程分享!

    for (TiXmlElement *inChild = inElem->FirstChildElement(); inChild != NULL; inChild = inChild->NextSiblingElement())C4P办公区 - 实用经验教程分享!

    {C4P办公区 - 实用经验教程分享!

    TiXmlElement *outChild = new TiXmlElement(inChild->Value());C4P办公区 - 实用经验教程分享!

    outElem->LinkEndChild(outChild);C4P办公区 - 实用经验教程分享!

    const char *cName = inChild->Attribute("name");C4P办公区 - 实用经验教程分享!

    outChild->SetAttribute("name", cName);C4P办公区 - 实用经验教程分享!

    const char *cType = inChild->Attribute("type");C4P办公区 - 实用经验教程分享!

    outChild->SetAttribute("type", cType);C4P办公区 - 实用经验教程分享!

    const char *cRatio = inChild->Attribute("ratio");C4P办公区 - 实用经验教程分享!

    outChild->SetAttribute("ratio", cRatio);C4P办公区 - 实用经验教程分享!

    const char *cLink = inChild->Attribute("link");C4P办公区 - 实用经验教程分享!

    outChild->SetAttribute("link", cLink);C4P办公区 - 实用经验教程分享!

    }C4P办公区 - 实用经验教程分享!

    }C4P办公区 - 实用经验教程分享!

    }C4P办公区 - 实用经验教程分享!

    outXml->SaveFile("b.xml");C4P办公区 - 实用经验教程分享!

    inXml->Clear();C4P办公区 - 实用经验教程分享!

    outXml->Clear();C4P办公区 - 实用经验教程分享!

    return true;C4P办公区 - 实用经验教程分享!

    }C4P办公区 - 实用经验教程分享!

    C  之如何使用tinyxml库读取XML文件C4P办公区 - 实用经验教程分享!

  • 8

    在该目录下新建两个xml文件,测试代码的实现功能是:将一个xml文件中的内容复制到另一个xml文件中。然后编译运行即可。C4P办公区 - 实用经验教程分享!

    C  之如何使用tinyxml库读取XML文件C4P办公区 - 实用经验教程分享!

  • 注意事项

    • 个人的经验分享,希望能帮到大家!

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!C4P办公区 - 实用经验教程分享!


    标签: 编程语言

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号