在看cocos2dx rich-text部分关于xml解析的代码时,看到类名带有sax
,很是好奇为啥带个这样的后缀。
注意这里和
萨克斯
没有半毛钱关系
有三种方式可以解析XML文件:DOM、SAX、StAX
解析方式 | 说明 | 优点 | 缺点 |
---|---|---|---|
DOM | 将整个XML文件加载到内存中,并构建出节点树;应用程序可以通过遍历节点树的方式来解析XML文件中的各个节点、属性等信息 | 方便对XML节点的添加修改等,而且解析也很方便 | 比较耗费内存,解析速度也不快 |
SAX (Simple API for XML) |
基于事件的解析,解析器在一次读取XML文件中根据读取的数据产生相应的事件,由应用程序实现相应的事件处理逻辑,即它是一种“推”的解析方式;一边扫描,一边解析 | 速度快、占用内存少 | 它需要应用程序自己处理解析器的状态,实现起来会比较麻烦,而且它只支持对XML文件的读取,不支持写入 |
StAX | 不同于SAX的“推”的解析方式,StAX是基于“拉”的解析方式,即应用程序根据自己的需要控制解析器的读取; | 继承了SAX解析速度快、占用内存少等优点,同时它好保持了接口简单、编程容易等特点 | 不支持写XML文件 |
SAX举例
<?xml version="1.0"?>
<doc>
<para>Hello, world!</para>
</doc>
sax会将xml解析成为这样的一个一个事件去交给handler处理
start document
start element: doc
start element: para
characters: Hello, world!
end element: para
end element: doc
end document
了解以上基础知识后,就可以正式开始review rich-text部分的源代码了。
网友评论