SAX解析:
解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析
文档的过程中,SAX会判断当前读到的字符是否合法XML语法中的某部分,如果符合就会触发事
件。所谓事件,其实就是一些回调(callback)方法,这些方法(事件)定义在ContentHandler
接口。
startDocument() endDocument() startElement() endElement() characters()
优点:
边扫描边解析.随时都可以停止。就不需要把文件全部读取后再解析,性能上有比较大的提升。
适合大型的文件的处理。
缺点:
操作相对比较复杂, “添加内容、删除内容和修改内容”.则是比较麻烦的事情。
DOM解析:
会将XML文件的所有内容读取到内存中,然后允许您使用DOM API遍历XML树形结构、检索所需的
数据。 用DOM操作XML的代码看起来比较直观,并且,在某些方面比基于SAX的实现更加简单。
优点:操作比较简单、方便,可以比较容易的修改文件内部的东西。
缺点:首先得把文件全部读取到内存,中间不能停止,大型的XML文件的话,内存的消耗比较大
PULL 解析
与 SAX 解析器相似. 使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值
代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用
parser.nextText()方法可以获取下一个Text类型元素的值。
json 和xml:
JSON 解析在编程上简单得多.它要增加内存消耗,在处理之前整体读取数据流并进行存储
XML 方法更快、内存受限更小 — 但是以增加复杂性为代价。
解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析
文档的过程中,SAX会判断当前读到的字符是否合法XML语法中的某部分,如果符合就会触发事
件。所谓事件,其实就是一些回调(callback)方法,这些方法(事件)定义在ContentHandler
接口。
startDocument() endDocument() startElement() endElement() characters()
优点:
边扫描边解析.随时都可以停止。就不需要把文件全部读取后再解析,性能上有比较大的提升。
适合大型的文件的处理。
缺点:
操作相对比较复杂, “添加内容、删除内容和修改内容”.则是比较麻烦的事情。
DOM解析:
会将XML文件的所有内容读取到内存中,然后允许您使用DOM API遍历XML树形结构、检索所需的
数据。 用DOM操作XML的代码看起来比较直观,并且,在某些方面比基于SAX的实现更加简单。
优点:操作比较简单、方便,可以比较容易的修改文件内部的东西。
缺点:首先得把文件全部读取到内存,中间不能停止,大型的XML文件的话,内存的消耗比较大
PULL 解析
与 SAX 解析器相似. 使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值
代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用
parser.nextText()方法可以获取下一个Text类型元素的值。
json 和xml:
JSON 解析在编程上简单得多.它要增加内存消耗,在处理之前整体读取数据流并进行存储
XML 方法更快、内存受限更小 — 但是以增加复杂性为代价。