解析XML的最佳实践

问题描述

| 我的应用程序应解析通过HTTP接收的XML。据我了解,有三种主要的XML解析方式: 萨克斯 DOM XmlPullParser 据说SAX是其中最快的,而DOM并不是大型XML文档的最佳选择。但是就解析而言,什么是大型XML文档?以下是推荐的解析器? XML文档大小介于1-5 kB之间 轻松遍历文档,即,我不仅需要了解当前元素,还需要了解父元素。     

解决方法

           据我了解,有三种主要的XML解析方式:    -SAX    -DOM    -XmlPullParser 错误!这些都不是最好的方法。您真正想要的是使用Simple XML Framework基于注释的解析。要了解为什么遵循此逻辑: Java使用对象。 可以使用Java对象表示XML。 (请参阅JAXB) 注释可以用于将XML映射到Java对象,反之亦然。 简单XML框架使用注释来允许您将Java和XML一起映射。 简单XML能够在Android上运行(与JAXB不同)。 您应该将简单XML用于Android上的所有XML需求。 为了帮助您做到这一点,我将指向您自己的博客文章,该文章确切说明了如何在Android上使用Simple库。 除非您有一个100MB的XML文件,否则“简单”将对您足够快。对我来说,我在所有的Android XML项目中都使用了它。 N.B.我应该指出,如果您要求用户在Android上下载大于1MB的XML文件,那么您可能需要重新考虑您的策略。您可能做错了。     ,        恐怕是这种情况,这取决于... 根据经验,根据底层实现,使用Java从XML文档中构建DOM树将消耗该文档本机大小的4到10倍(假设使用西方文本和UTF-8编码)。因此,如果速度和内存使用不是关键,那么对于您提到的小文档来说就不是问题。 DOM通常被认为是使用XML的一种非常不愉快的方式。对于背景知识,您可能需要看一下Elliotte Rusty Harold的演示文稿:XML API有什么问题(以及如何修复它们)。 但是,使用SAX可能会更加乏味,因为一次只能处理一个文档。但是,SAX速度很快,占用的内存很少。如果您可以找到自己喜欢的提取解析器,则一定要尝试一下。 另一种方法(不是超级高效,但是干净且可维护)是构建XML的内存树(例如,使用DOM),然后使用XPath表达式选择您感兴趣的信息。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...