【问题标题】:DOM vs SAX JavaDOM 与 SAX Java
【发布时间】:2012-07-31 05:16:58
【问题描述】:

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

【问题讨论】:

    标签: java android parsing dom xml-parsing


    【解决方案1】:

    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 很有用。

    【讨论】:

    • 他们都可以跳过标签吗?还是只有 SAX 可以?换句话说——DOM 需要解析所有的标签吗?
    • DOM 不能跳过标签,它将所有信息作为树模型返回,然后从树模型中您可以选择您想要的特定信息...所以回答您的问题,没有 DOM 不能跳过标签,只有 SAX 可以。有不同的方法可以只返回来自树的某个级别(例如树的最低级别)的信息,但您仍然需要遍历所有标签才能做到这一点
    猜你喜欢
    • 2011-12-04
    • 1970-01-01
    • 2010-10-15
    • 2012-06-01
    • 2011-11-01
    • 2010-09-12
    • 2012-07-28
    • 2010-09-16
    • 2010-12-26
    相关资源
    最近更新 更多