• <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
            數據加載中……

            Tinyxml使用入門手記

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

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

            }

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

            <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格式也是不同的,這種格式如下(以下直接借用了網友的例子):

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


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

            久久久久黑人强伦姧人妻| 无码精品久久久久久人妻中字| 国内精品九九久久久精品| 国产成人精品久久一区二区三区 | 久久w5ww成w人免费| 久久亚洲精品成人AV| 国内精品久久久久国产盗摄| 久久精品青青草原伊人| 久久久久久狠狠丁香| 性高湖久久久久久久久AAAAA| 浪潮AV色综合久久天堂| 丰满少妇人妻久久久久久4| 亚洲第一永久AV网站久久精品男人的天堂AV| 一日本道伊人久久综合影| 国产亚洲精久久久久久无码| 久久影视综合亚洲| 久久国产亚洲精品麻豆| 99久久国产宗和精品1上映| a级毛片无码兔费真人久久| 无码久久精品国产亚洲Av影片| 久久AⅤ人妻少妇嫩草影院| 77777亚洲午夜久久多喷| 97视频久久久| 久久久久亚洲精品无码网址| 97久久精品人妻人人搡人人玩| 无码人妻久久一区二区三区免费丨| 久久99精品国产99久久6| 久久综合狠狠色综合伊人| 久久亚洲中文字幕精品有坂深雪| 久久久久亚洲国产| 国产精品中文久久久久久久| 色99久久久久高潮综合影院| 精品久久久久久国产三级| 久久久青草久久久青草| 久久av无码专区亚洲av桃花岛| 久久99久国产麻精品66| 狠狠色丁香婷婷久久综合| 久久99这里只有精品国产| 久久综合九色综合网站| 久久久久99这里有精品10| 亚洲伊人久久综合中文成人网|