XML 文档定义有几种形式?它们之间有何本质区别?解析 XML 文档有哪几种方式?

XML 文档定义分为 DTD 和 Schema 两种形式,二者都是对 XML 语法的约束,其

本质区别在于 Schema 本身也是一个 XML 文件,可以被 XML 解析器解析,而且

可以为 XML 承载的数据定义类型,约束能力较之 DTD 更强大。对 XML 的解析主

要有 DOM(文档对象模型,Document Object Model)、SAX(Simple API for

XML)和 StAX(Java 6 中引入的新的解析 XML 的方式,Streaming API for XML),

295 页 共 485 页其中 DOM 处理大型文件时其性能下降的非常厉害,这个问题是由 DOM 树结构占

用的内存较多造成的,而且 DOM 解析方式必须在解析文件之前把整个文档装入内

存,适合对 XML 的随机访问(典型的用空间换取时间的策略);SAX 是事件驱动

型的 XML 解析方式,它顺序读取 XML 文件,不需要一次全部装载整个文件。当

遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,

用户通过事件回调代码来处理 XML 文件,适合对 XML 的顺序访问;顾名思义,

StAX 把重点放在流上,实际上 StAX 与其他解析方式的本质区别就在于应用程序

能够把 XML 作为一个事件流来处理。将 XML 作为一组事件来处理的想法并不新

颖(SAX 就是这样做的),但不同之处在于 StAX 允许应用程序代码把这些事件逐

个拉出来,而不用提供在解析器方便时从解析器中接收事件的处理程序。

原文地址:https://www.cnblogs.com/programb/p/13021400.html