我遇到了兩個不同的代碼,用StAX
解析文件。 Google快速告訴我,有兩種解析方式:使用遊標API並使用迭代器API。請告訴我兩者之間的區別,以及從開發人員的角度更易於使用哪一個。StAX Cursor API和Iterator API有什麼區別?
3
A
回答
7
你最有可能找到在Java Web服務開發包教程或Java EE 5 tutorial內StAX的API部分答案。他們都包含相同的信息,我下面重現:
光標和迭代器的API
比較光標和 迭代器的API之間進行選擇之前,你應該注意的幾個 東西,你可以做的 迭代器API,你不能用 光標API做的事:從XMLEvent的小號創建
對象ubclass是不可變的,並且可以在數組,列表和地圖中使用 ,並且 可以通過您的 應用程序傳遞,即使在解析器將 移動到後續事件之後也是如此。
您可以創建或者完全 新信息項或 現有項目的擴展,但與另外 方法XMLEvent的亞型。
與使用遊標API相比,您可以使用更爲簡單的 方式添加和刪除XML事件流中的事件。
同樣,記住一些普通 建議做出 您的選擇,當:
如果您正在編寫一個特別內存受限 環境,如J2ME,可以使 小,更高效的代碼與遊標API 。
如果性能是最高優先級 - 例如,創建 低級別的庫或 基礎設施時 - 光標API更 高效。
如果要創建XML處理管道,請使用迭代器 API。
如果要修改事件流,請使用迭代器API。
如果您希望您的應用程序能夠處理事件流的可插入處理 ,請使用迭代器 API。
一般來說,如果你沒有強烈的偏好的一種方式或其他 使用迭代器API是 推薦,因爲它是更 靈活且可擴展,從而 「面向未來的」你的應用程序。
迭代器API雖然推薦的是比光標API慢,當光標並不需要記住它已經被解析以前的節點;它提供了對XML文檔的僅前向解析,並且不具有構建對象的開銷。顯然,a benchmark表明,與StAX相比,SAX可能會更好地解析大型文檔;您可能想驗證您是否可以重現數據集的基準測試結果。
-1
相關問題
- 1. Win32 API和COM API有什麼區別?
- 2. iterator和listIterator()有什麼區別?
- 3. Iterator和Generator之間有什麼區別?
- 4. showFeedDialog和publishUserAction Facebook API有什麼區別?
- 5. Groupon API - endAt和expiresAt有什麼區別?
- 6. luceneappengine和search api有什麼區別?
- 7. REST和API有什麼區別?
- 8. API和Webservice有什麼區別?
- 9. Twitter流API和REST有什麼區別?
- 10. API和Microservice之間有什麼區別?
- 11. Redis和StrictRedis的API有什麼區別?
- 12. JDBC和Java API有什麼區別?
- 13. Facebook Graph API和REST API的登錄機制有什麼區別?
- 14. Google的Contacts API和CardDav API有什麼區別?
- 15. Core Reporting API和新的實時報告API有什麼區別?
- 16. javaee-api和javaee-web-api有什麼區別?
- 17. 「Google+ API」和「Google+ API(登錄)」有什麼區別?
- 18. Bing Speech API和UWP Speech API之間有什麼區別
- 19. Ruby Core API和Standard Library API有什麼區別?
- 20. javax.servlet.jsp和jsp-api-2.1:org.mortbay.jetty:jsp-api-2.1:6.1.5有什麼區別?
- 21. UI級別測試和API級別測試有什麼區別?
- 22. eclipse比較API有什麼區別?
- 23. 這些授權API有什麼區別?
- 24. SDK API管理器上的2.2 API和4.2.2 API有什麼區別
- 25. Python中的list和iterator有什麼區別?
- 26. `return iterator`和`iterator`產生的區別
- 27. 高級和低級Java API有什麼區別?
- 28. lua中的「dofile」和C API中的「luaL_dofile」有什麼區別?
- 29. GitHub API中blob_url,raw_url和contents_url有什麼區別?
- 30. magento擴展和rest api有什麼區別?
感謝Vineet,這是非常豐富的。 – Anand
關於大型文檔問題的更新。您提供的鏈接來自2011年的結構化文檔處理語言課程。我注意到你的評論是從2011年開始的,但現在是2014年。我沒有做新的基準測試,但仔細查看鏈接上的課程信息,似乎很多性能問題是由於DOCTYPE爲用過的。鑑於3年前已明確瞭解問題,似乎現在已經解決了這個問題。也; StAX Cursor API甚至在當時擁有最佳的整體性能 - 甚至在較大文件大小的情況下保持良好。 –