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

2025-10-31 00:11:19

1、下载tinyxml库,这里使用的是tinyxml2_6_2版本。

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

2、解压tinyxml2_6_2,然后在该目录下找到这六个文件。

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

3、把这六个文件放在你新建工程main.cpp目录下

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

4、然后把这六个文件导入vs2013编译器中

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

5、新建task3.cpp文件

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

6、把#include"tinystr.h"和#include"tinyxml.h"这两个头文件添加进去

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

7、把测试代码写入task3.cpp中。

测试代码如下:

#include"tinystr.h"

#include"tinyxml.h"

#include<iostream>

using namespace std;

#define SUCCESS 1

#define FAILED  0

int loadXml();

int main()

{

if (loadXml())

{

getchar(); return 1;

}

getchar();

return 0;

}

int loadXml()

{

//创建两个个xml文档对象,一个为读取,一个为输出

TiXmlDocument *inXml = new TiXmlDocument();

TiXmlDocument *outXml = new TiXmlDocument();

//加载xml文件

if (!inXml->LoadFile("a.xml"))  //判断XML文件是否加载成功

{

cerr << inXml->ErrorDesc() << endl;

return 0;

}

//定义根节点,记录xml文件的起始节点

TiXmlElement *inRoot = inXml->FirstChildElement(); //root指向xml文档的第一个节点

inXml->Value();//获取的值为文件名

//定义根节点并连接,将输入的根节点传给输出的根节点

TiXmlElement *outRoot = new TiXmlElement(inRoot->Value());

outXml->LinkEndChild(outRoot);

if (NULL == inRoot) //判断文件是否有内容

{

cerr << "No root element !!!" << endl;

inXml->Clear();

return 0;

}

//循环遍历每个节点

for (TiXmlElement *inElem = inRoot->FirstChildElement(); inElem != NULL; inElem = inElem->NextSiblingElement())

{

TiXmlElement *outElem = new TiXmlElement(inElem->Value());

outRoot->LinkEndChild(outElem);

const char *name = inElem->Value();//获取源文件中子节点的名字

outElem->SetValue(name);  //设置目的文件子节点的名字

//获取源文件的属性,设置目标文件的属性

const char *rName = inElem->Attribute("name");

outElem->SetAttribute("name", rName);

const char *rType = inElem->Attribute("type");

outElem->SetAttribute("type", rType);

const char *rSize = inElem->Attribute("size");

outElem->SetAttribute("size", rSize);

const char *rOdd = inElem->Attribute("odd");

outElem->SetAttribute("odd", rOdd);

if (strcmp(name, "0"))//name值是否为空

{

for (TiXmlElement *inChild = inElem->FirstChildElement(); inChild != NULL; inChild = inChild->NextSiblingElement())

{

TiXmlElement *outChild = new TiXmlElement(inChild->Value());

outElem->LinkEndChild(outChild);

const char *cName = inChild->Attribute("name");

outChild->SetAttribute("name", cName);

const char *cType = inChild->Attribute("type");

outChild->SetAttribute("type", cType);

const char *cRatio = inChild->Attribute("ratio");

outChild->SetAttribute("ratio", cRatio);

const char *cLink = inChild->Attribute("link");

outChild->SetAttribute("link", cLink);

}

}

}

outXml->SaveFile("b.xml");

inXml->Clear();

outXml->Clear();

return true;

}

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

8、在该目录下新建两个xml文件,测试代码的实现功能是:将一个xml文件中的内容复制到另一个xml文件中。然后编译运行即可。

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢