2013-03-25 25 views
6

我正在开发一个应用程序,第一次我要从来自远程服务器的xml文件解析数据。Android:解析XML数据的最佳解析器

但我无法选择哪个解析器是有效的或最适合解析。由于主要有三种类型解析的,我知道:

  1. SAX
  2. XMLPullParsing
  3. DOM

这是解析数据的最佳解析器?当我在Google上搜索时发现上述解析器的正面和负面两面。但我无法确定哪一种效率最高。

XML有大量数据和大量标签。

请指导我,并建议我应该使用哪个解析器,因为我在第一次在我的应用程序中使用解析。

+0

使用sax或xmlpullparsing。 – Raghunandan 2013-03-25 06:08:26

+1

如果文件大小合理,请尝试一下。如果它不适合核心,请使用sax。向我们展示您的模式并告诉我们您使用数据处理的是什么样的东西 – 2013-03-25 06:12:20

+0

意味着萨克斯如果好,那么对于大量数据而言,但请告诉我关于xmlpullparser的信息。萨克斯和xmlpull中最好的。 – 2013-03-25 06:14:52

回答

9

在所有的XML解析器中,Sax解析器是最快速的解析器,所以您可以毫无疑问地使用它....如果您需要从XML读取和写入数据,则可以使用DOM。使用SAX解析器,您将只能读取XML中的数据。由于这两个位于列表的顶部,因此您不需要考虑XMLPullparser。

+0

抱歉,但SAX解析器有自我关闭标记问题,你有任何解决方案来解决这个问题吗? – vuhung3990 2016-02-29 08:08:50

18

SAX解析是比DOM更好的实现。看到这两者之间的区别如下所示:

DOM

  • 节点都是树结构的形式。
  • 内存:它占用更多的内存,DOM只在 的情况下优先处理小的XML文档。
  • 运行时速度变慢。
  • 存储为对象。
  • 编程简单实现。
  • 易于导航和使用。

SAX

  • 序列事件。
  • 它不使用大型文档的首选内存。
  • 由于上述问题,运行时速度更快。
  • 对象将被创建。
  • 需要编写用于创建对象的代码。
  • 在SAX向后导航是不可能的,因为它按顺序 处理文档。
+2

+1。这是一个很好的比较。我会强调SAX更难实现,因为程序员必须通过节点。但是,速度更快,使用更少的内存,并且更适合于大型XML数据集或流式XML数据。 – 2013-03-25 06:41:17

+0

恰到好处的朋友。 :) – 2013-03-25 08:52:20

1

我会说XMLPullParsing,但我最近听到很棒的东西,关于Xerces可能也想看看那个。但是,从来没有使用Xerces和XMLPullParser从来没有让我失望。我们建立了一个使用它的色盲应用程序,它可以拉动成千上万的颜色组合,以告诉你刚才拍摄的照片是什么颜色。

更新:继承人几个链接,如果你不介意把读出:对,显示利弊和津贴双方

http://www.firstobject.com/xml-reader-sax-vs-xml-pull-parser.htm

而且另一个答案也许可以阅读到SAX parser vs XMLPull parser