新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论DOM, SAX, XPath等。
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 DOM/SAX/XPath 』 → XML解析器(TinyXML)的使用指南(转载) 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 32143 个阅读者浏览上一篇主题  刷新本主题   平板显示贴子 浏览下一篇主题
     * 贴子主题: XML解析器(TinyXML)的使用指南(转载) 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     longshentailang 帅哥哟,离线,有人找我吗?
      
      
      威望:1
      等级:计算机学士学位
      文章:325
      积分:2990
      门派:XML.ORG.CN
      注册:2006/6/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给longshentailang发送一个短消息 把longshentailang加入好友 查看longshentailang的个人资料 搜索longshentailang在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看longshentailang的博客楼主
    发贴心情 XML解析器(TinyXML)的使用指南(转载)

    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.编译运行


       收藏   分享  
    顶(1)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/8/9 15:53:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 DOM/SAX/XPath 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/28 9:35:55

    本主题贴数10,分页: [1]

     *树形目录 (最近20个回帖) 顶端 
    主题:  XML解析器(TinyXML)的使用指南(转载)(3333字) - longshentailang,2006年8月9日
        回复:  我下不下来呢 能不能把源文件给我呢 qiaoxiaoli0224@126.com..(56字) - 天涯咫尺之遥,2007年11月19日
        回复:  为什么下载没有连接?(20字) - seavan,2007年11月6日
        回复:  谢谢共享(10字) - skyblue523,2007年5月13日
        回复:  我下不了(8字) - lxlcnman,2007年4月29日
        回复:  good,thanks!(12字) - 邹小虎,2007年4月11日
        回复:  gooood(6字) - derry755,2007年4月9日
        回复:  hao(3字) - lagen,2007年3月6日
        回复:  上传的tinyxml_2_3_4.zip文件(39字) - longshentailang,2006年8月9日
        回复:  tinyxml_2_3_4.zip(107字) - longshentailang,2006年8月9日

    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    78.125ms