與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