漫谈TinyXML2开源库

TinyXML2是一个解析XML文件的开源库,它支持对XML的读写操作,其代码出自Lee Thomason之手,在拜读TinyXML2的过程中学习到了很多,向Lee Thomason致敬。

TinyXML2的设计思路

XML格式

XML文件是一种树状结构,必须包含一个根节点,该节点是其他节点的父节点(当然XML声明和注释可以和root节点为兄弟关系)。常规的XML文件格式如下:





Text



""


类设计

由于XML的树状结构,TinyXML2将XML的节点抽象为XMLNode,XML中除了把属性key-value抽象为XMLAttribute类型外,其余的都看作XMLNode的子类,首先将整个XML文档抽象为XMLDocument,将声明部分抽象为XMLDeclaration,将注释抽象为XMLComment,将元素抽象为XMLElement,将文本抽象为XMLText。

READ

TinyXML2的读取XML的设计思想是将XML文件一次性的读入内存中,对字符串逐字解析,期间使用深度优先遍历(DFS)和多态特性进行不同类型元素的解析。
XMLDocument的Identify函数起到实例化XML节点的作用,它主要根据XML的数据头判断其XMLNode的类型并进行实例化。每个XMLNode子类都有自身的解析函数,这是解析多态的体现。

start with type
" XMLDeclaration
"

你可能感兴趣的:(漫谈TinyXML2开源库)