background image

C++XML 解析之 TinyXML 篇

最近使用 TinyXML 进行 C++ XML 解析,感觉使用起来比较简单,很容易上手,本

文给出一个使用 TinyXML 进行 XML 解析的简单例子,很多复杂的应用都可以基于本例

子的方法来完成。以后的文章里会讲解使用 Xerces 进行 C++ XML 解析的例子,希望大家

一起交流。

    TinyXML 是一个开源的解析 XML 的解析库,能够用于 C++,能够在 Windows 或 Linux

中编译。这个解析库的模型通过解析 XML 文件,然后在内存中生成 DOM 模型,从而让

我们很方便的遍历这棵 XML 树。

    DOM 模型即文档对象模型,是将整个文档分成多个元素(如书、章、节、段等),并利

用树型结构表示这些元素之间的顺序关系以及嵌套包含关系。

    首先从网上下载 TinyXML 的库,文件夹的名字是 TinyXpath,在工程里做如下配置:

    在附加包含路径里添加:你的 tinyxpath 路径/tinyxpath/include

    在附加库路径里添加:你的 tinyxpath 路径/tinyxpath/lib

    在对象/库路径里添加:tinyxpathd.lib,如果使用 release 版本,则是 tinyxpath.lib。

    另外,由于我开发的项目是多线程的,所以设置了多线程的环境,因此使用 TinyXML

没有出现问题。本人将 TinyXML 写在一个单独的 C++工程进行测试,发现如果不设置多

线程的环境,会出现链接错误。我觉得原因可能是 TinyXML 使用了多线程环境,因此需

要设置多线程的环境。在工程/设置下的 C/C++选项卡中,选择 Code Generation,在 Use 

run-time library 中选择 Debug MultiThreaed DLL 即可。

    本例的 XML 文件 Students.xml 如下:

    <Class name="计算机软件班">

    <Students>

    <student name="张三" studentNo="13031001" sex="男" age="22">

    <phone>88208888</phone>

    <address>西安市太白南路二号</address>

    </student>

    <student name="李四" studentNo="13031002" sex="男" age="20">

    <phone>88206666</phone>