cocos2dx --tinyxml2 学习笔记

tinyxml2

不能解析外部自定义引用实体,只能解析数字实体和内置实体,这些实体的解析在封装的字符
串类StrPair对象中;CCDictMaker 不对节点元素的属性进行处理。

1. CCDictMaker
功能:根据Plist类型文件中,数据创建并返回一个 CCDictionary | CCArray 对象。
描述:该类继承了CCSAXDelegator 代理类。通过父类的接口实现了对各个节点数据的获取。并且
将获取来的数据组织成 相应的对象。

成员方法:
A) dictionaryWithContentsOfFile(plistFile) 返回CCDictionary 对象
B) arrayWithContentsOfFile(plistFile) 返回CCArray 对象
C) startElement / textHandler / endElement
解析节点、并组织数据。

2. CCSAXDelegator
功能: 解析PLIST 文件的代理类。
描述:该类声明了3个在解析PLIST 文件时获取数据的接口。

3. CCSAXParser
功能:PLIST文件解析类,该类的对象实现了解析PLIST 文件的所有方法
描述:该类接受一个代理对象作为成员,在解析PLIST 时,会调用该代理类成员。获得调用的对
象可以获取传过去的节点数据。


解析方法:parse
实质上parse方法 的解析是通过tinyxml2::XMLDocument 对象来实现的


4. XmlSaxHander
功能: 继承自tinyxml2::XMLVisitor 类,实现了对 PLIST 文件中各类节点属性的获取。
描述:该类对象获取的节点数据,会传递给 CCSAXParser 成员变量

5. tinyxml2::XMLVisitor
功能:获取节点的所有数据。
描述: 该类定义了如何获取一个节点的所有属性。

6. XMLDocument
功能: 解析XML 文件。并具有 将缓存数据保存到生成XML文件的功能
描述:该类中定义了如何解析一个XML的所有方法。它继承自 XMLNode,并重写了文档对象相关
的方法。 


方法:
Parse(pXMLData, uDataLength)
Accept(visitor)


7. XMLPrinter
功能: 实现了访问父类获取的方法,并且 新增了输出XML格式数据的方法
描述:该类继承自 XMLVistor.并实现了访问XML节点的方法。并具有将缓存中的数据输出到文
件中的功能。如果给它指定了文件指针FILE* 那么他将会把数据写入到文件指针所指的地方。如果
设置了紧凑compact,那么输出只有空格和新的一行


8. XMLVisitor
功能:声明了访问XML节点的方法。
描述:该类声明了XML 各个节点的访问方法。

9. DynArray
功能: 动态数组
描述: 它是一个模板类。 INIT指定了数组所占用的固定内存(栈空间)的大小,当数组要越
界时,动态扩大内存大小。

template <class T, int INIT>
DynArray< T, INIT >() 

10. StrPair
功能: 字符串封装类,用来处理XML相关字符串操作
描述: 该类是为了XML解析而特意封装的,它有特定的功能。它具有删除字符串第一个字符之前
空格的功能,以及读取指定结束标识前的字符功能。类内部会根据实际情况来分配动态内存。
方法: 
ParseText 解析文本
ParseName 解析名称
GetStr() 返回一个const char* 字符串。该函数在返回字符串时,会先对字
存储在该方法内部的字符进行处理。包括替换内置实体,数字实体和去掉空白。

11. XMLNode
功能:XML文件节点。
描述: 节点的成员变量有 该节点的属性值、属性对象链表头节点指针,和父节点、上一同级
节点、下一同级节点指针。并且封装了解析XML节点的方法。
重点方法:
ParseDeep() 解析当前节点以及子节点和下一节点。该方法才利用
迭代的思想实现对所有节点的解析。运用多态的思想解析子节点;

Accept(); 该方法实现时,运用的是访问者模式来实现对节点数
据的访问。

特殊成员变量:
XMLDocument* _document; 所有几点的内存都是有该对象内的内存池  MemPool
对象分配管理的。

12. MemPool
功能:定义内存池申请对象、释放对象等通用方法。

template< int SIZE >MemPoolT 
解析XML时用到的 内存池模板

13. 文档节点
下面的类都是继承自 XMLNode. 用于解析不同的XML节点
XMLElement
XML元素节点,需要解析节点的属性值,以及节点的子节点信息。

XMLText XMLComment XMLDeclaration XMLUnknown
这几个都属于文本类型, 不需要解析属性
值以及子节点。


XMLDocument
XML文档类型。该对象用来解析一个完整的XML文档数据。
它的父类也是XMLNode, 它的功能比较特殊。它的对象里,分别申请了 各种类型的内存池,
文档内的所有节点的内存都有XMLDocument 对象来管理。因此,在XMLNode对象都有一指向该文
档对象的指针。它在XMLNode里定义。

14. XMLError
该枚举定义了,解析XML文件时,出现的错误类型。
这些枚举值在XMLDocument 对象的 SetError 方法里有对应的处理。


Whitespace
空白的枚举类型。用于处理文本中的空白是否需要保留,或是去掉


15. XMLAttribute
XML节点的属性类型。它不继承XMLNode.该类的对象存储了 一个 key值以及key值对应的属性
值。并且其的定义属于链表节点。它包括了一个指向下一个该类对象的指针。
注意:该对象的内存是由XMLDocument 对象管理的。并且只有XMLDocument 对象能开辟该类
对象。因为它的构造方法 是私有的。而且只有XMLDocument为唯一一个友元类

16. XMLHandle
该类不属于tinyxml2 DOM文档对象模型的一部分。给类定义了XMLNode 对象的操作,可以很
简便的对节点类型进行处理。只不过要多耗费一点内存。

XMLConstHandle
继承自 CMLHandle ,唯一的区别就是它返回的 操作对象都是const 类型的。
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值