• <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編譯器

            久久综合亚洲欧美成人| 日韩精品国产自在久久现线拍| 久久香蕉国产线看观看猫咪?v| 欧美日韩精品久久久免费观看| 亚洲伊人久久大香线蕉综合图片| 精品久久久久久中文字幕人妻最新| 国产ww久久久久久久久久| 中文字幕久久精品 | 国产精品一久久香蕉国产线看| 久久精品这里只有精99品| 国产精品久久久久久久app| 亚洲AV乱码久久精品蜜桃| 久久精品国产第一区二区| 久久精品无码午夜福利理论片 | 久久中文字幕视频、最近更新| 精品久久久久香蕉网| 亚洲精品无码久久千人斩| 蜜臀久久99精品久久久久久| 久久最近最新中文字幕大全| 精品无码久久久久国产| 伊人色综合久久天天人手人婷 | 国产精品女同久久久久电影院| 久久这里只有精品首页| 欧美粉嫩小泬久久久久久久| 久久久久中文字幕| 久久免费小视频| 欧美一区二区精品久久| 日本三级久久网| 国产99久久久国产精品~~牛| 日本精品久久久久中文字幕8| 久久亚洲精品成人AV| 欧美午夜精品久久久久免费视| 99久久国产精品免费一区二区 | 91久久精品无码一区二区毛片| 久久国产精品-国产精品| 久久噜噜电影你懂的| 99久久国产综合精品网成人影院| 国产精品成人无码久久久久久| 久久久91人妻无码精品蜜桃HD| 久久久精品久久久久特色影视| 亚洲国产成人久久精品99|