1、下载tinyxml库,这里使用的是tinyxml2_6_2版本。
2、解压tinyxml2_6_2,然后在该目录下找到这六个文件。
3、把这六个文件放在你新建工程main.cpp目录下
4、然后把这六个文件导入vs2013编译器中
5、新建task3.cpp文件
6、把#include"tinystr.h"和#include"tinyxml.h"这两个头文件添加进去
7、把测试代码写入task3.cpp中。测试代码如下:#include"tinystr.h"#include"tinyxml.h"#include<iostream>using namespace std;#define SUCCESS 1#define FAILED 0int 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;}
8、在该目录下新建两个xml文件,测试代码的实现功能是:将一个xml文件中的内容复制到另一个xml文件中。然后编译运行即可。