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

XML解析器(TinyXML)的使用指南的更多相关文章

  1. tinyxml一个优秀的C++ XML解析器

    读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好. TinyXML是一个开源的解 ...

  2. TinyXML:一个优秀的C++ XML解析器

    //-------------------------------------------------------------------------------------------------- ...

  3. TinyXML:一个优秀的C++ XML解析器[转]

    TinyXML:一个优秀的C++ XML解析器 读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似 ...

  4. 转:TinyXM--优秀的C++ XML解析器

    读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好. TinyXML是一个开源的解 ...

  5. XML解析器(转)

    常见C/C++ XML解析器有tinyxml.XERCES.squashxml.xmlite.pugxml.libxml等等,这些解析器有些是支持多语言的,有些只是单纯C/C++的.如果你是第一次接触 ...

  6. Duilib源码分析(三)XML解析器—CMarkup

    上一节介绍了控件构造器CDialogBuilder,接下来将分析其XML解析器CMarkup: CMarkup:xml解析器,目前内置支持三种编码格式:UTF8.UNICODE.ASNI,默认为UTF ...

  7. XML 解析器

    所有现代浏览器都内建了供读取和操作 XML 的 XML 解析器.解析器把 XML 转换为 XML DOM 对象 - 可通过 JavaScript 操作的对象. 解析 XML 文档为DOM对象 方法一: ...

  8. Java XML解析器

    使用Apache Xerces解析XML文档 一.技术概述 在用Java解析XML时候,一般都使用现成XML解析器来完成,自己编码解析是一件很棘手的问题,对程序员要求很高,一般也没有专业厂商或者开源组 ...

  9. Xml的转义字符--约束-xml解析器

    XML解析器:Dom适合增删改查(crud),缺点就是内存消耗大:  Sax:内存消耗非常小,解析速度快,但是不适合增删改:

随机推荐

  1. 最新 xode shareSDK使用分享

    shareSDK使用分享 什么是shareSDK ShareSDK实现第三方登录.分享.关注等功能. 为什么使用        快速,方便 如何使用 (1)官方下载ShareSDK        参照 ...

  2. JQuery 中的Ajax

    JQuery 对 Ajax 操作进行了封装, 在 jQuery 中最底层的方法时 $.ajax(), 第二层是 load(), $.get() 和 $.post(), 第三层是 $.getScript ...

  3. 你好,C++(30)“大事化小,小事化了”5.4.3 工资程序成长记:函数

    5.4.3 工资程序成长记:函数 自从上次小陈“程序员”的工资程序得到老板的夸奖,口头许诺给他涨工资以后,老板再也没有找过他,涨工资的事自然也就没有下文了.这天,老板又突然召他去办公室.这下可把小陈高 ...

  4. spring boot了解

    spring4倾向于基于注解的配置,强化的注解的功能,对比与spring3还是有很多的区别:spring boot对spring的各个组件功能管理,基于默认配置即可简单构建一个spring4的项目,对 ...

  5. CentOS 7 之安装X Window System

    网上说的直接 yum groupinstall "Desktop"经实验,在我的机器上是无效的.我使用的是: yum groupinstall 'GNOME Desktop' 才o ...

  6. JavaScript:Object.prototype.toString方法的原理

    在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. var arr = []; console.log(Obje ...

  7. 2016最新一元云购完整源码 云购CMS系统 带安卓和ios手机客户端 源码免费分享

    原文转自:http://www.zccode.com/thread-724-1-1.html 该资源说明: 看起来不错的一套一元云购CMS源码,源码包里面带了安卓和ios手机客户端,手机客户端需要自己 ...

  8. jquery keyup 在IOS设备上输入中文时不触发

    今天做一个异步查询功能的时候发现在IOS设备上查询中文时keyup没有触发,在其他设备上时可以的,后来在stackoverflow上找到下面这种解决方法,贴出来算是抛砖引玉了. $h_input.on ...

  9. sitecore(key\value\language)的灵活应用

    1.当我们在做网站的时候是否会因为一个页面的文字变动来回改变.这样的麻烦sitecore都帮我们解决了. 2.sitecore分类key和value和语言几个维度.不同的key会因为不同的语言显示不同 ...

  10. Git使用说明--常用命令

    These are common Git commands used in various situations: start a working area (see also: git help t ...