2010-06-15 29 views
1

我有一個Android應用程序,它爲用戶解析XML文件,並以更具移動性的格式顯示結果。該應用程序適用於大多數用戶,但一些用戶擁有大量的數據,並且應用程序崩潰,因爲它的內存不足。DOM解析Android設備上的大型XML文件時的內存問題

有什麼辦法我有一個DOM風格的XML解析器退出解析數據後,一定量的解析?我只需要前30個元素,這樣可以使應用程序更加高效。

我想使用SAX或拉解析器,但我解析的XML是無效,我無法控制它。除非任何人有一些好的SAX解決方案讓我解析混亂,無效的XML,否則我認爲DOM是唯一的出路。

感謝您的閱讀!

+0

這似乎是一個不可能的任務... 由無效,你的意思是XML不是架構有效?或者它不是很好地形成xml?你關心的元素是否歸入一個共同的父母之下? 您可能可以使用其他方法將xml的那部分拉出來,然後解析它。 我不知道任何dom解析器讓你把它叫做中途通過。 – 2010-06-15 21:04:49

+0

感謝您的評論,XML是HTML,並且它有各種導致SAX解析器崩潰的非轉義實體。我需要做的就是抽出某個類的前10個元素。 – tonyc 2010-06-15 22:02:48

+0

啊,我明白了。您可能會尋找將您的html轉換爲xhtml的工具。那裏有幾個,雖然我不知道他們將如何在Android中執行。或者,http://ccil.org/~cowan/XML/tagsoup/聲稱是一個格式錯誤的HTML sax解析器。 – 2010-06-15 22:13:15

回答

0

這可能不是最好的解決方案,但這是我最終做的。

我使用HTTPClient來抓取文件,我想出了文件的最小可能大小可能在哪裏,它仍然有我需要的數據量,並使用該信息來設置請求的範圍標題。

這會導致請求只返回部分響應,但它適用於我的情況。