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

            久久这里都是精品| 国产巨作麻豆欧美亚洲综合久久| 亚洲精品高清一二区久久| 欧美日韩精品久久久久| 中文字幕久久久久人妻| 久久亚洲私人国产精品vA| 亚洲狠狠综合久久| 亚洲成av人片不卡无码久久 | 久久亚洲精品视频| 久久无码精品一区二区三区| 欧美一区二区三区久久综| 美女写真久久影院| 亚洲国产精品无码久久98| 精品久久久久久99人妻| 久久精品中文騷妇女内射| 久久香蕉国产线看观看猫咪?v| 99久久婷婷免费国产综合精品| 久久99热这里只有精品66| 韩国三级中文字幕hd久久精品 | 国产精品免费久久| 漂亮人妻被黑人久久精品| 国产精品久久久香蕉| A级毛片无码久久精品免费| 国产精品无码久久久久久| 久久久噜噜噜久久中文字幕色伊伊| 99热都是精品久久久久久| 久久99精品国产自在现线小黄鸭| 伊人久久成人成综合网222| 国产高清美女一级a毛片久久w| 国产亚洲综合久久系列| 伊人久久大香线蕉av一区| 伊人色综合久久天天人守人婷 | 91精品国产91久久综合| 国产亚洲精品自在久久| 久久久久亚洲AV无码麻豆| 久久香蕉超碰97国产精品| 性高湖久久久久久久久| 久久久久亚洲AV片无码下载蜜桃| 久久国产精品无码HDAV| 国产精品久久久久久福利漫画| 久久九九有精品国产23百花影院|