DOM vs SAX Java

时间:2012-08-02 08:47:56

标签: java android parsing dom xml-parsing

我有一个可以从互联网上下载的大型xml文件。为了解析它,我尝试使用DOM解析器但是它不允许我跳过某些标记,因为它给了我一个错误。有没有解决的办法?如果我理解正确,SAX解析器允许您跳过标签,而DOM则不允许。有人可以澄清这个事实,好像就是这样,我无法理解DOM解析器的优点是什么。提前谢谢。

1 个答案:

答案 0 :(得分:12)

DOM被设计为一种独立于语言的对象模型,用于存放任何XML数据,因此是一个庞大而复杂的系统。它非常适合首先加载XML文档,然后对其执行各种操作的两阶段方法。 另一方面,SAX被设计为使用单相方法的相当轻量级的系统。使用SAX,在加载文档时执行用户指定的操作。一些应用程序使用SAX生成较小的对象模型,过滤掉不感兴趣的信息,然后以类似于DOM的方式处理。 请注意,尽管DOM和SAX是众所周知的“标准”XML API,但还有很多其他可用的API,有时使用非标准API可能会使特定应用程序更好。使用XML,重要的一点始终是数据;代码可以重写。

一些快速点:

  1. SAX比DOM快。
  2. SAX适用于大型文档,因为     它占用的内存比Dom少。
  3. SAX花费的时间更少     阅读文档,因为Dom需要更多时间。
  4. 我们可以使用SAX     访问数据但我们无法修改数据。使用Dom我们可以修改数据。
  5. 我们可以随时随地停止SAX解析。
  6. SAX是顺序解析,但使用DOM我们也可以向后移动。
  7. 解析机器生成的代码SAX更好。解析人类     可读文档DOM很有用。