Tiny使用详解

1、TinyXml源代码只有4个cpp文件和2个头文件。

2、首先要理解TinyXml中的各个基本类型之间的关系。

可以看到TinyXml中的注释comment ,声明declaration,元素element,文本等都是节点Node的子类,也就是说可以把XMl文件中的各个元素当做节点来处理。Node类型也有到各个子类之间的转换方法,如ToElement()转换成元素,ToDocument转换成文档等。

因此可以吧TiXmlNode作为TinyXml的基本数据类型来操作,这样转化到其他类型也比较方便!



3、类之间的关系
TinyXml实现的是DOM访问模型,因此提供了一系列的类对应XML文件中的各个节点。主要类间的关系如下:
TiXmlBase:其他类的基类,是个抽象类
TiXmlNode:表示一个节点,包含节点的一般方法,如访问子节点、兄弟节点、编辑自身、编辑子节点
TiXmlDocument:表示整个XML文档,不对应其中某个特定的节点。
TiXmlElement:表示元素节点,可以包含子节点和TiXmlAttribute
TiXmlComment:表示注释
TiXmlDeclaration:表示声明
TiXmlText:表示文本节点
TiXmlUnknown:表示未知节点,通常是出错了
TiXmlAttribute:表示一个元素的属性


下面是一个简单的例子:


<?xml version="1.0" encoding="utf-8" ?>
<!-This is only a sample-->
<book>
   <name>TinyXml How To</name>
   <price unit=”RMB”>20</price>
   <description>Some words…</description>
</ book >


整个文档,对应TiXmlDocument。

book,name,price, description,都对应TiXmlElement

第一行对应一个TiXmlDeclaration

第二行对应一个TiXmlComment

“TinyXml How To”对应一个TiXmlText

unit则是price的一个TiXmlAttribute


2.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

< 需要注意的问题>

--各类之间的转换--

由于各个节点类都从TiXmlNode继承,在使用时常常需要将TiXmlNode*类型的指针转换为其派生类的指针,在进行这种转换时,应该首先使用由TiXmlNode类提供的一系列转换函数,如ToElement(void),而不是c++的dynamic_cast。

--检查返回值--
由于TinyXml是一个非校验的解析器,因此当解析一个文件时,很可能文件并不包含我们预期的某个节点,在这种情况下,TinyXml将返回空指针。因此,必须要对返回值进行检查,否则将很容易出现内存访问的错误。


4、要理解TinyXml中的每个节点都可能是另一个节点的父节点这个很重要,因此遍历TinyXml文档要用递归的方法。每个节点都可能有属性,文本什么的!


5、每个type of TiXmlNode节点的值'value'对应如下 :

                Document: filename of the xml file

                Element: name of the element

                Comment: the comment text

                Unknown: the tag contents

                Text: the text string


6、TinyXml中Node的类型types是一个枚举类型,其成员如下:
 DOCUMENT, ELEMENT, COMMENT, UNKNOWN, TEXT, and DECLARATION



阅读更多
博主设置当前文章不允许评论。

没有更多推荐了,返回首页