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

            搜索

            •  

            積分與排名

            • 積分 - 206528
            • 排名 - 130

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲精品国产自在久久| 免费无码国产欧美久久18| 久久国产精品77777| 国产精品久久久久…| 国产精品日韩深夜福利久久| 亚洲中文字幕伊人久久无码| 久久久无码一区二区三区| 欧美与黑人午夜性猛交久久久 | 精品国产乱码久久久久久郑州公司 | 久久综合伊人77777| 无码AV中文字幕久久专区| 久久99久久无码毛片一区二区| 日本强好片久久久久久AAA| 久久久久亚洲AV无码专区网站| 少妇久久久久久被弄高潮| 久久强奷乱码老熟女网站| 久久福利青草精品资源站| 99精品国产99久久久久久97| 午夜福利91久久福利| 国内精品伊人久久久久网站| 99久久国语露脸精品国产| 一本一本久久A久久综合精品 | 成人午夜精品久久久久久久小说| 国产色综合久久无码有码| 久久精品国产亚洲av瑜伽| 久久久青草青青亚洲国产免观| 久久久国产精品亚洲一区| 亚洲伊人久久精品影院| 久久狠狠爱亚洲综合影院| 一本综合久久国产二区| 久久久国产99久久国产一| 亚洲国产精品综合久久一线| 亚洲国产精品成人AV无码久久综合影院| 伊人久久综在合线亚洲2019 | 亚洲AV无码成人网站久久精品大| 亚洲国产精品成人久久蜜臀| 亚洲国产成人久久一区久久| 久久亚洲av无码精品浪潮| 日韩va亚洲va欧美va久久| 久久婷婷色香五月综合激情| 国内精品伊人久久久久777|