• <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 天下無雙 閱讀(7387) 評論(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

            搜索

            •  

            積分與排名

            • 積分 - 205756
            • 排名 - 130

            最新評論

            閱讀排行榜

            評論排行榜

            久久国产乱子伦免费精品| 国产亚洲成人久久| 精品国际久久久久999波多野| 久久久久人妻精品一区| 九九久久99综合一区二区| 国产亚洲精久久久久久无码| 久久婷婷久久一区二区三区| 人妻少妇精品久久| 狠狠狠色丁香婷婷综合久久俺| 91精品国产91久久久久久青草| 99久久国产亚洲高清观看2024 | 囯产极品美女高潮无套久久久| 欧美成人免费观看久久| 香蕉久久夜色精品升级完成| 91性高湖久久久久| 色欲久久久天天天综合网| 国产精品免费久久久久影院 | 久久精品国产久精国产果冻传媒| 97精品依人久久久大香线蕉97| 精品无码久久久久国产| 久久国产成人| 久久国产精品99久久久久久老狼| 人妻少妇久久中文字幕| 国产激情久久久久影院| 国产亚洲精品美女久久久| 精品熟女少妇AV免费久久| 亚洲欧美精品一区久久中文字幕| 国产精品美女久久久网AV| 国产亚洲精久久久久久无码| 91麻豆国产精品91久久久| 亚洲v国产v天堂a无码久久| 久久久久亚洲AV成人网| 国产无套内射久久久国产| 99久久精品国产一区二区三区| 99久久国产热无码精品免费| 伊人久久久AV老熟妇色| 模特私拍国产精品久久| 99久久国产综合精品女同图片| 狠狠色丁香婷婷久久综合 | 色88久久久久高潮综合影院 | 久久99热这里只有精品66|