c++ tinyxml使用

主要介绍tinyxml的使用、优缺点.以及源码阅读。

tinyxml

tinyxml2和tinyxml1都是Thomason编写的。tinyxml2适用于大部分的c/c++项目,久经考验,所以实用性毋庸置疑。相对于tinyxml1来说,tinyxml2只有两个文件,更为简洁;tinyxml1则有6个文件,一般生成静态库使用,也可生成动态。 tinyxml2于tinyxml1的API相似,测试案例足够丰富。tinyxml2解析器基本上是重写,更适合游戏开发使用,使用内存更少,更快,使用更少的内存分配。另外tinyxml2取消了对STL的支持,字符串查询均使用const char *来比奥斯减少了string类型对象的构造,代码更为简洁。
相同的地方:

  • 使用简单易用的API
  • 基于DOM的解析器
  • 都支持UTF-8编码

tinyxml2优点:

  • 对C/C++项目普适性高
  • 内存消耗更少,相对于tinyxml1节省近40%,速度更快
  • 无需C++ STL支持
  • 使用较新的C++特性
  • 处理特殊的空白字符,空格,TAB和回车

tinyxml1的优点:

  • 较好的错误跟踪,可以显示错误的位置
  • 提供C++ STL的支持,流、字符串等
  • 经历更多更好的测试

实际使用

在项目中的使用有多重方式,一般有三种方式:

  1. 直接将tinyxml2.h和tinyxml2.cpp代码copy到相应的工程目录,然后#include “tinyxmml2.h”, using namespace tinyxml2即可在代码中使用
  2. 生成静态库,代码下载之后直接build可生成静态库,静态库相对文件比较大
  3. 生成动态库,可以分离出使用,并可以进行代码更新
    大部分项目使用第一种和第三种方式,第三种方式一般在需要对xml功能进行定制化开发,添加一些额外功能使用的较多。

动态库生成,在tinyxml2.h前面加上

#define TINYXML2_EXPORT