使用tinyxml讀取xml檔案

來源:互聯網
上載者:User
#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;    }}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.