android - Android 中 XML SAX 解析器、Pull 解析器和 DOM 解析器之间的区别

标签 android saxparser xmlpullparser domparser

我想知道 Android 中的 XML SAX 解析器、Pull 解析器和 DOM 解析器 之间的区别。在什么情况下,哪个在性能和实现上更好?

谢谢。 霍拜卜。

最佳答案

Dom 解析器 - 它使用基于对象 的方法。即,它首先将整个 XML 加载到内存中,将 XML 节点转换为对象,然后开始解析它们。所以,它相当慢。

SAX 和 PULL 解析器 - 它们使用基于事件的方法。两者在内存和性能方面几乎相同。但是,很少有关于何时使用它们的区分情况,如下所述。

Dom 解析器 - 当您需要在解析之前验证 整个 XML 时使用它。 当 XML 太大并且验证可能受到影响时,切勿使用它。 一旦开始解析,它就会从起始节点解析到结束节点。无法仅解析特定节点。

SAX - 当您想要解析整个 XML 时使用它。 一旦开始解析,它就会从起始节点解析到结束节点。无法仅解析特定节点。

PULL - 当您不想解析整个 XML 时使用它。它比 SAX 更容易实现,因为您不必维护解析器的状态。您可以只拉取您感兴趣的特定节点。

我的建议是 - 需要验证 - 选择 DOM,文件大小 或者你不是对解析整个 XML 感兴趣 - 前往PULL,文件大小large 或者您需要解析 < strong>整个 XML 文件 - 转至 SAX

关于android - Android 中 XML SAX 解析器、Pull 解析器和 DOM 解析器之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11297273/

相关文章:

Android Studio 没有使用 gradle 来构建我的项目

android - 如何通过单击按钮调用加载程序?

android - 无法解析符号 'editText'

java - 使用 poi xssf 和 sax 解析器解析 xlsx 文件的一部分

java - SAXParser 没有明确的原因为我提供了 62 个元素之后的第二个标签的空值,为什么?

android - 存在声明时出现 XML Pull Parser 错误

android xmlpullparser异常

Android Firebase 推送通知在应用程序被终止时不起作用

java - 在android上读取xml文件

android - 如何在android中显示各种解析的XML文件?