#include "./xml/tinystr.h"
#include "./xml/tinyxml.h"
#include <string>
#include <iostream>
#include <cstdio>
#include <errno.h>
using namespace std;
void read_xml(const char *path,string &content);
void read_element(const TiXmlNode *p,string &content);
int main()
{
string str;
read_xml("config.xml",str);
TiXmlDocument document;
document.Parse(str.c_str());
FILE *pFile=fopen("copy.xml","w+");
if(NULL==pFile)
{
cerr<<strerror(errno)<<endl;
}
else
{
if(!document.SaveFile(pFile))
cerr<<strerror(errno)<<endl;
fclose(pFile);
}
return 0;
}
void read_xml(const char *path,string &content)
{
TiXmlDocument Document=TiXmlDocument(path);
if(!Document.LoadFile())
{
fprintf(stderr,"LoadFile error: %s\n",strerror(errno));
return;
}
TiXmlNode *pNode=Document.FirstChild();
for(;pNode!=NULL;pNode=pNode->NextSibling())
{
switch(pNode->Type())
{
case TiXmlText::TINYXML_ELEMENT:
read_element(pNode->ToElement(),content);
break;
case TiXmlText::TINYXML_DECLARATION:
content+="<?xml version=\"";
content+=pNode->ToDeclaration()->Version();
content+="\" encoding=\"";
content+=pNode->ToDeclaration()->Encoding();
content+="\" standalone=\"";
content+=pNode->ToDeclaration()->Standalone();
content+="\" ?>\n";
break;
case TiXmlText::TINYXML_COMMENT:
content+="<!--";
content+=pNode->ToComment()->Value();
content+="-->";
content+="\n";
break;
default:
break;
}
}
}
void read_element(const TiXmlNode *p,string &content)
{
if(NULL==p)
return;
switch(p->Type())
{
case TiXmlText::TINYXML_ELEMENT:
{
content+="<";
content+=p->ToElement()->Value();
content+=">\n";
const TiXmlNode *pNode;
for(pNode=p->FirstChild();pNode!=NULL;pNode=pNode->NextSibling())
{
read_element(pNode,content);
}
content+="</";
content+=p->ToElement()->Value();
content+=">\n";
break;
}
case TiXmlText::TINYXML_TEXT:
{
content+=p->ToText()->Value();
content+="\n";
break;
}
case TiXmlText::TINYXML_COMMENT:
{
content+="<!--";
content+=p->ToComment()->Value();
content+="-->";
content+="\n";
break;
}
default:
content+="unknown node type\n";
break;
}
}
使用tinyxml读取xml文件
最新推荐文章于 2024-05-24 21:11:07 发布