使用XML数据源

在SAX与DOM之间,如何选择

选择 DOM 还是 SAX,这取决于几个因素:

  1. 应用程序的目的:如果必须对数据进行更改,并且作为 XML 将它输出,则在大多数情况下,使用 DOM。与使用 XSL 转换来完成的简单结构更改不一样,如果是对数据本身进行更改,则尤其应该使用 DOM。
  2. 数据的数量:对于大文件,SAX 是更好的选择。
  3. 将如何使用数据:如果实际上只使用一小部分数据,则使用 SAX 将数据抽取到应用程序中,这种方法更好些。另一方面,如果知道将需要向后引用已经处理过的信息,则 SAX 可能不是正确的选择。
  4. 需要速度:通常,SAX 实现比 DOM 实现快。

记住 SAX 和 DOM 不是互斥的,这一点很重要。可以使用 DOM 来创建事件的 SAX 流,可以使用 SAX 来创建 DOM 树。事实上,大多数解析器实际常常使用 SAX 来创建 DOM 树!


在过去,分析XML文件只有两种方式——SAX(用于XML的简单API)和DOM (文档对象模型)。第一种方式以顺序的方式读取XML文件,并在它发现像elementsattributes这样的不同的XML组件时告知应用程序;而第二种方法会创建一个表示XML文档里数据的树,然后提供各种方法在这些数据里导航。

由于这两种方法中的每一种都自己的优势和劣势,所以微软用其.NET框架引入了一个叫做“拉模型”的第三方模式,它会试图提供一种对XML数据的非缓冲的、只进和只读的访问。以外行的话说,这意味着你能够以顺序访问XML文件里的信息(就像SAX一样),并另外选择在运行期间跳过特定的元素(elements)及其内容(就像DOM一样)。XmlReader()这个新的对象被创建用来完成这一任务。

posted @ 2007-09-12 14:45  Ready!  阅读(523)  评论(0编辑  收藏  举报