TinyXML经典入门

前端之家收集整理的这篇文章主要介绍了TinyXML经典入门前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.TinyXML

1.1.简介

TinyXML2.0是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM(Document Object Model)模型,从而让我们很方便的遍历这棵XML树。
下载网址

https://github.com/leethomason/tinyxml2

1.2.Qt+TinyXML环境搭建

下载完成后,解压找到tinyxml2.cpp 以及tinyxml2.h,并且添加到c++工程目录当中,与其他源码一起编译即可。

#include <iostream>
#include "tinyxml2.h"
using namespace tinyxml2;
using namespace std;

int main()
{
    XMLDocument doc;
    doc.LoadFile("baidu.xml");
    doc.Print();
    cout<<"doc status "<<doc.ErrorName()<<endl;
    return 0;
}

1.3.读写XML

1.3.1.写

#include <iostream>
#include <string.h>
#include "tinyxml2.h"
using namespace tinyxml2;

using namespace std;


#if 0
<?xml version="1.0" encoding="utf-8"?>
<<!-- This is a XML comment --> >

<bookstore>
    <book category="COOKING">
        <title lang="en">Everyday Italian</title>
        <author>Giada De Laurentiis</author>
        <year>2005</year>
        <price>30.00</price>
    </book>
</bookstore>
     ;
#endif

int main()
{

    XMLDocument *pDoc=new XMLDocument; //定义一个文档的指针
     XMLDeclaration *pDel = pDoc->NewDeclaration("xml version=\"1.0\" encoding=\"UTF-8\"");
    pDoc->LinkEndChild(pDel);
    XMLComment     *pCom = pDoc->NewComment("This is a XML comment");
    pDoc->LinkEndChild(pCom);

    XMLElement     *pEleRootBookStore = pDoc->NewElement("bookstore");

        XMLElement     *pEleBookOfBookStore = pDoc->NewElement("book");
        pEleBookOfBookStore->SetAttribute("category","COOKING");

            XMLElement *pEleTitleOfBook = pDoc->NewElement("title");
            pEleTitleOfBook->SetAttribute("lang","en");
            pEleTitleOfBook->SetText("Everyday Italian");
            pEleBookOfBookStore->LinkEndChild(pEleTitleOfBook);

            XMLElement *pEleAuthorOfBook = pDoc->NewElement("author");
            pEleAuthorOfBook->SetText("Giada De Laurentiis");
            pEleBookOfBookStore->LinkEndChild(pEleAuthorOfBook);

            XMLElement *pEleYearOfBook = pDoc->NewElement("year");
            pEleYearOfBook->SetText(2005);
            pEleBookOfBookStore->LinkEndChild(pEleYearOfBook);

            XMLElement *pElePriceOfBook = pDoc->NewElement("price");
            pElePriceOfBook->SetText(30.00);
            pElePriceOfBook->LinkEndChild(pElePriceOfBook);

        pEleRootBookStore->LinkEndChild(pEleBookOfBookStore);
    pDoc->LinkEndChild(pEleRootBookStore);
    pDoc->Print();
    pDoc->SaveFile("bookStore.xml");
    free(pDoc);

    return 0;
}

1.3.2.读

#include <iostream>
#include <string.h>
#include "tinyxml2.h"
using namespace tinyxml2;

using namespace std;


#if 0

<?xml version="1.0" encoding="utf-8"?>
<<!-- This is a XML comment --> >

<bookstore>
    <book category = "COOKING">
        <title lang="en">Everyday Italian</title>
        <author>Giada De Laurentiis</author>
        <year>2005</year>
        <price>30.00</price>
    </book>
</bookstore>
     ;
#endif


int main()
{
    XMLDocument *pDoc = new XMLDocument;
    pDoc->LoadFile("bookStore.xml");


    XMLElement *pRoot = pDoc->RootElement();
    cout<<"rootEleName :"<<pRoot->Name()<<endl;

    XMLElement *pEle = pRoot->FirstChildElement();
    cout<<"FirstChildName:"<<pEle->Name()<<endl;
    const XMLAttribute *pEleAttr = pEle->FirstAttribute();
    cout<<"FirstChildAttrName:"<<pEleAttr->Name()<<" AttrValue:"<<pEleAttr->Value()<<endl;
    pEle->SetAttribute("category","STUDY");

        pEle = pEle->FirstChildElement();
        cout<<" Name:"<<pEle->Name()
            <<" AttrName:"<<pEle->FirstAttribute()->Name()
            <<" AttrValue:"<<pEle->FirstAttribute()->Value()
            <<" Text:"<<pEle->GetText()<<endl;
        pEle = pEle->NextSiblingElement();
        cout<<" Name:"<<pEle->Name()
            <<" Text:"<<pEle->GetText()<<endl;
        pEle = pEle->NextSiblingElement();
        cout<<" Name:"<<pEle->Name()
            <<" Text:"<<pEle->GetText()<<endl;

    XMLElement *ele = pDoc->NewElement("Water");
    ele->SetAttribute("aa","bb");
    ele->SetText("good Water");


    pEle = pDoc->FirstChildElement();
    pEle->InsertEndChild(ele);

    pDoc->Print();

    return 0;
}

猜你在找的XML相关文章