与PC /服务器相比,Android设备速度更慢,内存更低,那么在Android中处理XML的最佳方式是什么?我有一套非常复杂的xml需要解析。 SAX或DOM都会导致太多的代码。任何人都有很好的建议?我想让它变得干净和快速Android中处理XML的最佳方式
回答
不要太在意类文件的大小(“代码”),关心应用程序的内存消耗。对于android来说,实现SAX解析器并仅提取内部数据模型所需的信息可能是明智的。
DOM构建器将为内存中的完整XML文档创建一个文档,这可能会导致性能问题。
我不得不关心代码的大小,因为xml格式可能会改变功能,我不得不担心维护成本 – 2010-09-02 09:08:25
我理解 - 我以为你想保持代码基础小,因为应用程序是为一个机器人手机。 – 2010-09-02 09:36:02
您在应用程序中使用的解析器的种类取决于您的要求。你也可以试试XMLPullParser
。你可以看到所有三个这里解析器的性能..
http://www.developer.com/ws/article.php/10927_3824221_2/Android-XML-Parser-Performance.htm
有可用的几个第三方的XML解析器太...我用这个解析器我以前的应用程序之一,它是相当快速。它有Xpath实现。
第一个链接是404 - 移动到http://www.developer.com/ws/android/development-tools/Android-XML-Parser-Performance-3824221.htm – 2013-01-22 13:12:42
XMLPullParser看起来像提供最好的选择。 检查Quick Introduction to XmlPull v1 API。
- 世界上最节省内存 (1.3倍〜1.5倍的XML文档 的大小),随机存取XML解析器。
- 世界上最快的XML解析器:在 酷睿2.5Ghz的笔记本电脑,VTD-XML 的5倍〜12倍, 提供的每核 持续吞吐量90〜120 MB /秒,优于DOM解析器。
- 世界上最快的XPath 1.0 的实现。
- 世界上最高效的XML 索引器,无缝集成 与您的XML应用程序。
- 世界上唯一的增量更新 有能力的XML分析器能够 剪切,粘贴,拆分和 组装XML文档,效率最高。
- 世界上唯一的XML解析器 允许您使用XPath处理 256 GB XML文档。
下面的链接也有您可以使用各种选项:
最好的办法是SAX或XMLPull。 Android为两者提供API。这里的主要区别是:
- 在SAX,分析器驱动解析并执行回调您的代码
- 拉出解析用户代码驱动的解析。
下面是XmlPull解析的例子:
try {
reader = new InputStreamReader(...from soem input stream);
XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
parser.setInput(reader);
parser.require(XmlPullParser.START_DOCUMENT, null, null);
// get the event type
int eventType = parser.getEventType();
// see what type of event it is...
while(eventType != XmlPullParser.END_DOCUMENT) {
String pName = parser.getName();
switch(eventType) {
case XmlPullParser.START_TAG:
if(pName.equals("sometag")) {
// get the textcontent
String msg = parser.nextText();
// get attribute value
String strErrCode = parser.getAttributeValue(null, "somattr");
break;
case XmlPullParser.END_TAG:
if(pName.equals("sometag")) {
// do something
}
break;
default:
break;
}
eventType = parser.next(); // parse next and generate event
} // while loop
}catch(Exception e) {
String msg = e.getMessage();
Log.e(TAG, "Error while parsing response: " + msg, e);
}
下面是关于如何做拉解析
拉解析保存了一些代码,但代码库由于XML的结构非常复杂,因此仍然很大 – 2010-09-02 10:05:31
- 1. 最佳方式处理
- 2. 处理Android XML布局的最佳方法
- 3. 在Android中处理Feed的最佳方式是什么?
- 4. NullPointerException和处理它的最佳方式
- 5. 从C#处理.dbf的最佳方式
- 6. 处理树数组的最佳方式
- 7. 处理“重复”的最佳方式
- 8. 处理资源的最佳方式
- 9. 处理WCF超时的最佳方式
- 10. 错误处理的最佳方式
- 11. 处理多个NSTableView的最佳方式
- 12. 处理Braintree超时的最佳方式
- 13. 在Zend框架中处理会话处理的最佳方式
- 14. 处理此XML Feed的最佳方式是什么?
- 15. 什么是处理XML发送到WCF的最佳方式3.5
- 16. Android - 处理下载的图像文件的最佳方式
- 17. 处理不同Android屏幕尺寸的最佳方式?
- 18. 使用Android处理Firebase参考的最佳方式
- 19. Android Phonegap:存储和处理阵列的最佳方式
- 20. Android:处理点,线和圆形手势的最佳方式
- 21. 什么是处理android连接更改的最佳方式?
- 22. 在.NET中处理XML的最佳方法
- 23. cocos2dx中的最佳处理方法
- 24. 在iPad中处理不同方向的最佳方式
- 25. 在逻辑子表达式中处理NULL的最佳方式
- 26. 处理rabbitmq消息处理中的时钟的最佳方法
- 27. 处理虚拟url中的内容的最佳方式 - php
- 28. 在jquery中处理约100帧的动画的最佳方式
- 29. 处理复制中的标识列的最佳方式
- 30. 处理可可中的malloc失败的最佳方式
最快的XML解析LIB是VTD-XML的一个quick intro ..这里是一个最新论文证明它sdiwc.net/digital-library/web-admin/upload-pdf/00000466.pdf – 2016-03-17 23:31:22