• <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>
            posts - 45,  comments - 232,  trackbacks - 0
            XML解析器(TinyXML)的使用指南
            作者:thelONE??來源
            www.sqlite.com.cn ??

            最近軟件體系結構課的一個大作業挺難的,要做很多的東西,比如網絡連接,視頻播放,XML等工作.?這里我給大家提供一個關于XML文件的解析方法的引導,?大家可以去試試這個工具(TinyXML)

            1.首先下載TinyXML庫的文件,這里給出鏈接,大家自己去下吧,記著要上國際
            http://prdownloads.sourceforge.net/tinyxml/tinyxml_2_3_4.zip?download

            2.下載后解壓這個壓縮包,把所有的東西放到一個找的著的地方(比如,E:\開發庫\TinyXML)

            3.用Visual?C++(推薦VC++.NET2003)創建一個新的工程(Win32控制臺)

            4.在TinyXML的目錄里面找到tinystr.h,?tinyxml.h,?tinystr.cpp,?tinyxml.cpp,?tinyxmlerror.cpp,?tinyxmlparser.cpp六個文件加入到剛剛創建的項目中去

            5.打開tinyxml.h,?在第一行加入下面這行:
            #define?TIXML_USE_STL

            6.然后創建一個cpp文件,輸入下面的內容:

            ???1.?#include?<iostream>
            ??????#include?<fstream>
            ??????#include?"tinyxml.h"

            using?namespace?std;

            int?main()
            {
            string?filename?=?"first.xml";
            TiXmlDocument*?doc?=?new?TiXmlDocument(filename.c_str());

            //////////////////////////////////////////////////////////////////////////
            //?在這里復制文件
            //////////////////////////////////////////////////////////////////////////
            std::ifstream?ifs(filename.c_str());
            char?buffer[1024];
            char?c,?*p?=?buffer;
            while(ifs.get(c))
            {
            ??*p++=c;
            }
            *p?=?0;
            ifs.close();
            //////////////////////////////////////////////////////////////////////////

            if(!doc->Parse(buffer))
            {
            ??cout?<<?doc->ErrorDesc()?<<?endl;
            }

            const?TiXmlElement*?root?=?doc->RootElement();
            for(?const?TiXmlNode*?child?=?root->FirstChild();
            ??child;
            ??child=child->NextSibling())
            {
            ??OutputDebugStringA(child->Value());

            ??/*
            ??生成一個StaticBox

            ??<staticbox?mesh="crate.mesh">
            ??<position?x="-8"?y="2"?z="4"?/>
            ??<dimension?x="2"?y="4"?z="2"?/>
            ??</staticbox>

            ??*/
            ??if((child->Type()?==?TiXmlNode::ELEMENT)?&&?(!strcmp(child->Value(),"staticbox")))
            ??{
            ???const?TiXmlElement?*box?=?(const?TiXmlElement*)child;

            ???double?px,?py,?pz;
            ???double?dx,?dy,?dz;

            ???std::string?mesh;
            ???mesh?=?box->Attribute("mesh");

            ???for(const?TiXmlNode?*sub_tag?=?box->FirstChild();?sub_tag;?sub_tag?=?sub_tag->NextSibling()?)
            ???{
            ????if(sub_tag->Type()?==?TiXmlNode::ELEMENT)
            ????{
            ?????const?TiXmlElement?*sub_element?=?(const?TiXmlElement*)sub_tag;

            ?????if(!strcmp(sub_tag->Value(),"position"))
            ?????{
            ??????px?=?(sub_element->Attribute("x",&px))?px:0.0;
            ??????py?=?(sub_element->Attribute("y",&py))?py:0.0;
            ??????pz?=?(sub_element->Attribute("z",&pz))?pz:0.0;
            ?????}
            ?????else?if(!strcmp(sub_tag->Value(),"dimension"))
            ?????{
            ??????dx?=?(sub_element->Attribute("x",&dx))?dx:1.0;
            ??????dy?=?(sub_element->Attribute("y",&dy))?dy:1.0;
            ??????dz?=?(sub_element->Attribute("z",&dz))?dz:1.0;
            ?????}
            ????}
            ???}

            ???cout?<<?"<StaticBox>\n";
            ???cout?<<?"\tPosition?=?("?<<?px?<<?",?"?<<?py?<<?",?"?<<?pz?<<?")\n";
            ???cout?<<?"\tDimension?=?("?<<?dx?<<?",?"?<<?dy?<<?",?"?<<?dz?<<?")\n\n";
            ??}
            }

            delete?doc;

            getchar();
            return?0;
            }

            7.然后在項目的文件夾中加入一個xml文件,如下:

            <?xml?version="1.0"?encoding="utf-8"??>
            <Scene>
            <staticbox?mesh="crate.mesh">
            ??<position?x="-8"?y="2"?z="4"?/>
            ??<dimension?x="2"?y="4"?z="2"?/>
            </staticbox>
            <staticbox?mesh="crate.mesh">
            ??<position?x="3"?y="2"?z="4"?/>
            ??<dimension?x="2"?y="4"?z="2"?/>
            </staticbox>
            </Scene>

            8.編譯運行

            posted on 2007-01-26 12:44 天下無雙 閱讀(7407) 評論(3)  編輯 收藏 引用 所屬分類: C/C++

            FeedBack:
            # re: XML解析器(TinyXML)的使用指南(轉)
            2012-03-25 15:59 | xhui
            不行啊,新建的cpp編譯顯示 fatal error C1083: Cannot open include file: 'tinyxml.h': No such file or directory,怎么回事  回復  更多評論
              
            # re: XML解析器(TinyXML)的使用指南(轉)
            2013-02-20 18:00 | 哈哈哈
            TiXmlNode::ELEMENT 報錯?  回復  更多評論
              
            # re: XML解析器(TinyXML)的使用指南(轉)
            2013-04-21 10:30 | duan
            在項目-屬性-配置屬性-c++-常規-附件包含目錄里把那個.h文件的所在目錄加進去行了。@xhui
              回復  更多評論
              

            常用鏈接

            留言簿(15)

            隨筆分類

            隨筆檔案

            相冊

            我的其它領域Blog

            搜索

            •  

            積分與排名

            • 積分 - 206713
            • 排名 - 130

            最新評論

            閱讀排行榜

            評論排行榜

            久久无码中文字幕东京热| 久久亚洲私人国产精品| 亚洲精品美女久久久久99小说| 亚洲AV日韩AV永久无码久久| 少妇高潮惨叫久久久久久| 麻豆成人久久精品二区三区免费| 精品国产VA久久久久久久冰| 99久久精品免费看国产免费| 香蕉99久久国产综合精品宅男自| 亚洲精品乱码久久久久久蜜桃不卡 | 久久久国产打桩机| 久久综合九色综合久99| 久久99精品久久久久久野外| 亚洲精品白浆高清久久久久久| 国产精品久久午夜夜伦鲁鲁| 日日狠狠久久偷偷色综合免费| 91精品国产91久久综合| 日韩欧美亚洲综合久久| 99久久99这里只有免费的精品| 久久这里有精品视频| 亚洲一区中文字幕久久| 中文字幕亚洲综合久久菠萝蜜| 国产精品久久久久无码av| 亚洲中文字幕伊人久久无码 | 久久人与动人物a级毛片| 久久中文娱乐网| 色综合久久88色综合天天| 亚洲色婷婷综合久久| 久久婷婷五月综合97色一本一本 | 狠狠色丁香久久婷婷综| 漂亮人妻被黑人久久精品| 精品久久久久久99人妻| 日本免费久久久久久久网站| 久久久精品国产sm调教网站 | 精品久久久无码21p发布 | 香蕉久久av一区二区三区 | 久久99精品国产麻豆宅宅| 久久精品一本到99热免费| 久久精品a亚洲国产v高清不卡| 亚洲级αV无码毛片久久精品| 久久人人爽人人人人片av|