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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。