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

            搜索

            •  

            積分與排名

            • 積分 - 205724
            • 排名 - 130

            最新評論

            閱讀排行榜

            評論排行榜

            无码人妻久久一区二区三区| 2020最新久久久视精品爱 | 久久久精品久久久久特色影视 | 久久精品嫩草影院| 精品99久久aaa一级毛片| 性高湖久久久久久久久AAAAA| 久久AV高潮AV无码AV| 国产成人精品免费久久久久| 日韩欧美亚洲综合久久影院d3| 久久久久亚洲精品中文字幕| 亚洲av成人无码久久精品 | 久久精品久久久久观看99水蜜桃 | 久久久久久综合一区中文字幕| 久久人人爽人人爽人人片AV东京热| 久久亚洲中文字幕精品一区| 久久国产精品久久久| 久久精品国产免费观看| 99久久成人18免费网站| 午夜天堂精品久久久久| 久久免费观看视频| 国产成人久久激情91| 伊人久久无码中文字幕| 国产成人久久久精品二区三区 | 99精品国产99久久久久久97| 99久久免费只有精品国产| 久久精品一本到99热免费| 久久无码精品一区二区三区| 久久青草国产手机看片福利盒子 | 国内精品伊人久久久影院| 亚洲综合精品香蕉久久网97| 久久久久久久亚洲Av无码| 久久婷婷色综合一区二区| 无码任你躁久久久久久久| 久久久久国产精品三级网| 久久99毛片免费观看不卡| 国产精品岛国久久久久| 久久精品欧美日韩精品| 国产亚洲精品美女久久久| 久久青青草原亚洲av无码app | 国产高潮久久免费观看| 成人久久综合网|