• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 40, 文章 - 0, 評論 - 9, 引用 - 0
            數(shù)據(jù)加載中……

            Tinyxml使用入門手記

            http://www.dingge.com/forum/dispbbs.asp?boardID=43&ID=14213&page=1

            最 近在準備給自己的GUI系統(tǒng)加入XML解析部分,就開始研究Tinyxml,差了不少資料,看了網(wǎng)友的例題還有Tinyxml本身自帶的范例程序。得到了 很大的啟發(fā),得之余民而用之于民,我整理了一下簡單的入門程序給大家,想必大家看完這兩種調用方式就會用Tinyxml了。

            就不說廢話了,直接看程序:

            兩種不同的代碼原因是對應不同的XML格式。我們先看第一種格式的XML文件(Tinyxml自帶例題)

            ------------------------------------------------------------------------------------------------------------------------
            <?xml version="1.0" encoding="UTF-8"?>
            <document>
                <English name="MY" value="UTF32">The world has many languages</English>
                <Button name="OK_btn" x = "20" y = "77">OK</Button>
            </document>
            -------------------------------------------------------------------------------------------------------------------------

            #include "..\Tinyxml\tinyxml.h"
            #include <iostream>
            #include <string>
            int main(void)
            {
             TiXmlDocument doc( "test2.xml");
             doc.LoadFile();

             TiXmlHandle docH( &doc );
             TiXmlElement* element = docH.FirstChildElement( "document" ).FirstChildElement( "Button" ).Element();
             std::cout<<"<"<<element->Value()<<">"<<std::endl;
             std::cout<<"   name = "<<element->Attribute( "name" )<<std::endl;
             std::cout<<"   x = "<< element->Attribute( "x" )<<std::endl;
             std::cout<<"   y = "<< element->Attribute( "y" )<<std::endl;
             std::cout<<"   Text = "<<element->GetText()<<std::endl;

             getchar();
             return 0;

            }

             這些代碼我想已經(jīng)很清楚了,所有的元素的值都會打印在屏幕上,如下:

            <Button>
               name = OK_btn
               x = 20
               y = 77
               Text = OK

               這里的element 指針就是當前我們操作的指針,通過docH.FirstChildElement( "document" ).FirstChildElement( "Button" ).Element();方法我們獲取了要尋找的Button這個元素的指針,然后它的元素就可以通過element->Attribute( "name" );element->Attribute( "x" )來得到了,使用非常方便。

            Tinyxml中還有另外一種查找元素的方式,其對應的XML格式也是不同的,這種格式如下(以下直接借用了網(wǎng)友的例子):

            <?xml version="1.0" encoding="UTF-8"?>
            <persons>
            <student>
               <stu_name>hami</stu_name>
               <stu_age>15</stu_age>
               <stu_sex>男</stu_sex>
            </student>
            <teacher>
               <tea_name>alin</tea_name>
               <tea_age>16</tea_age>
               <tea_sex>女</tea_sex>
            </teacher>
            </persons>

            readXmlElement.cpp

            #pragma comment(lib,"tinyxml.lib")
            #include "tinyxml.h"
            #include <iostream>
            #include <string>
            #define TIXML_USE_STL
            int main(void)
            {
            TiXmlDocument *personDoc = new TiXmlDocument;
            personDoc->LoadFile("test.xml");
            TiXmlElement *personElement = personDoc->RootElement();
            std::cout<<personElement->Value()<<std::endl;
            TiXmlElement *student = personElement->FirstChildElement();
            std::cout<<" "<<student->Value()<<std::endl;
            TiXmlElement *nameElement = student->FirstChildElement();
            std::cout<<"    "<<nameElement->Value();//<<std::endl;
            //std::cout<<"    "<<nameElement->GetText()<<std::endl;
            TiXmlElement *ageElement = nameElement->NextSiblingElement();
            std::cout<<"    "<<ageElement->Value()<<std::endl;
            TiXmlElement *sexElement = ageElement->NextSiblingElement();
            std::cout<<"    "<<sexElement->Value()<<std::endl;
            TiXmlElement *teacher = student->NextSiblingElement();
            std::cout<<" "<<teacher->Value()<<std::endl;
            TiXmlElement *teaNameElement = teacher->FirstChildElement();
            std::cout<<"    "<<teaNameElement->Value()<<std::endl;
            TiXmlElement *teaAgeElement = teaNameElement->NextSiblingElement();
            std::cout<<"    "<<teaAgeElement->Value()<<std::endl;
            TiXmlElement *teaSexElement = teaAgeElement->NextSiblingElement();
            std::cout<<"    "<<teaSexElement->Value()<<std::endl;
            return 0;
            }

            如果看懂了第一個例子,這個例子就非常好懂了。不用說什么,輸出以后答案都在屏幕上。

            在真正的tinyxml使用過程中,往往是這兩種方式的組合使用,大多數(shù)游戲中的XML都比較復雜,元素的層次也很多,所以大家通過簡單的了解以后,更多的還要靠自己去練習,在實踐中提高。如果有什么疑問或者討論的,可以在這里留言,希望大家多多交流!


            posted on 2008-09-19 10:36 閱讀(1833) 評論(0)  編輯 收藏 引用 所屬分類: xml編譯器

            一本久久a久久精品vr综合| 欧美亚洲国产精品久久蜜芽| 亚洲伊人久久成综合人影院| 久久久精品波多野结衣| 99久久夜色精品国产网站| 精品久久一区二区| 亚洲午夜精品久久久久久app| 亚洲精品乱码久久久久久久久久久久 | 久久99免费视频| 久久久精品视频免费观看| 久久青青草原精品国产| 日本高清无卡码一区二区久久| 国产精品免费看久久久| 99久久这里只精品国产免费| 国产福利电影一区二区三区久久久久成人精品综合 | 久久天天日天天操综合伊人av| 久久久亚洲欧洲日产国码aⅴ| 国产精品亚洲综合专区片高清久久久| 久久人与动人物a级毛片| 青青国产成人久久91网| 无码人妻久久一区二区三区| 亚洲精品无码专区久久同性男| 四虎国产永久免费久久| 精品综合久久久久久888蜜芽| 久久久久久曰本AV免费免费| 久久九九久精品国产| 国产99久久久国产精品~~牛| 国产精品一久久香蕉国产线看| 国产成人久久精品一区二区三区| 一日本道伊人久久综合影| 久久久久久国产精品无码下载| 国产精品熟女福利久久AV| 国产女人aaa级久久久级| 国产免费久久精品丫丫| 国産精品久久久久久久| 精品久久久久久国产三级| 国产激情久久久久影院老熟女| 91精品国产91热久久久久福利| 精品熟女少妇aⅴ免费久久| 精品久久久久久久中文字幕| 欧美亚洲日本久久精品|