• <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 閱讀(1826) 評論(0)  編輯 收藏 引用 所屬分類: xml編譯器

            欧美亚洲色综久久精品国产| 欧美日韩精品久久久免费观看| 亚洲中文精品久久久久久不卡 | 国产精品久久久久国产A级| 国产精品9999久久久久| 国产精品成人精品久久久| 亚洲欧美日韩久久精品| 国产精品欧美久久久天天影视| 久久综合视频网站| 国产91久久精品一区二区| 性做久久久久久久久老女人| 国产精品一区二区久久| 要久久爱在线免费观看| 久久精品国产半推半就| 亚洲精品tv久久久久久久久| 国产精品丝袜久久久久久不卡| 丁香色欲久久久久久综合网| 色综合久久久久网| 国内精品久久久久影院日本| 亚洲国产成人久久一区久久| 热99re久久国超精品首页| 久久精品无码专区免费青青| 久久久久国产精品三级网| 国产精品青草久久久久婷婷| 日韩精品无码久久久久久| 一本色道久久88综合日韩精品 | 国产精品久久久久a影院| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 精品久久人妻av中文字幕| 伊人情人综合成人久久网小说| 91久久香蕉国产熟女线看| 老司机国内精品久久久久| 精品久久久久久久久中文字幕| 日韩精品久久久久久免费| 色天使久久综合网天天| 久久人人爽人人人人片av| 国内精品久久久久影院老司| 伊人色综合久久天天网| 亚洲国产天堂久久久久久| 久久精品中文字幕一区| 免费无码国产欧美久久18|