实际上,为了能够处理XML文档,几乎所有的程序都需要一个XML解析器。解析器从文档中提取实际的数据,然后创建一系列的事件或者是新的数据结构。解析器也能够检查文档是否是well-formed,也就是说是否严格的遵守了XML规范,而这是处理XML文档之前就必须进行的工作。另外,解析器还应该能够判断一个文档是否遵守DTD/Schema标准,如果该文档有一个DTD/Schema的话。
我们知道,XML不象HTML,它本身是不关心应用程序如何展示它的内容的,而关于内容的展示形式可以由CSS或者XSL来指定。所以一个良好的XML解析器还需要对CSS和XSL进行分析处理。
当前的XML解析器性能一览:
IBM XML4JApache Xerces
Sun Project X
Microsoft MSXML
Oracle XML Parser for Java
James Clark XP
对文档是否有良好格式的检查
+
+
+
+
+
文档有效性检查
+
+
+
+
-
XML Schema支持
+
-
-
-
-
名字空间(Namespaces)支持
+
+
+
+
-
XSL-T
通过LotusXSL实现对XSLT的支持
-
+
+
-
Java
+
+
-
+
+
Win32
通过Java实现
通过Java实现
通过Java实现
+
-
SAX 1.0
+
+
+
+
+
SAX 2.0
+
-
+
-
-
DOM Level 1 1.0
+
+
+
+
-
DOM Level 2 1.0
+
-
-
-
-
是否开放源码
+
-
-
-
+
下载地址
下载一
下在二
下载
下载
下载
下载
解析器的不同不仅在于它们是否支持完整性检查和文档表现形式转化,而且还在于它处理文档的方式。基于事件的解析器实际上是通过串行的方式来处理文档的,也就是说当它遇到一个开始或者结束标记的时候,它向应用程序发送消息,由应用程序决定如何进行处理。SAX就是这样的一个API集合。第二种方法就是根据文档的内容建立一个层次的数据结构,这就是DOM API的工作方式。实际上,一个解析器的质量的好坏的评定标准在于它对XML标准的支持程度。当前最好的是Sun的解析器。