2010-10-27 70 views
1

我在iPhone上的libxml解析器出現問題!我使用PerformXMLXPathQuery來解析一個大約有100000行的xml文件。運行PerformXMLPathQuery時應用程序中斷,因爲它運行內存不足。我能在這裏做什麼?libxml在iphone上分配太多內存

感謝,

馬庫斯

回答

3

你可能想看看的libxml2的xmlTextReader "streaming" interface

這是一個向前移動的光標,放棄它已處理的輸入數據,並且在向前移動時不會構建大型的,內存密集的DOM。仍然可以使用XPath查詢,限制了子樹必須被擴展(即,複製到內存中的libxml結構中)以查找要搜索的文檔的某些部分。

xmlTextReader接口比在根元素處引入一些XPath查詢要困難得多,但對於文檔大小而言,在內存受限的設備上,這可能是您最好的選擇。

由於類似的原因,我剛剛完成了對xmlTextReader的轉換,並且對於20KB和30MB文檔,在XML處理過程中使用的內存是相同的。

1

您可以嘗試使用的NSXMLParser獲得唯一的數據要保存內存使用

+0

我們第一次使用NSXMLParser,但是這個解析器會降低數據量...... – Markus 2010-10-27 12:37:39

+0

是否確定問題是內存問題? – 2010-10-27 12:39:46

+0

我這麼認爲,如果我在樂器中運行它,實時字節分配會迅速上升到28.61 MB,然後突然中斷!查看設備日誌時,報告的類型爲:低內存 – Markus 2010-10-27 12:47:23