我在iPhone上的libxml解析器出現問題!我使用PerformXMLXPathQuery來解析一個大約有100000行的xml文件。運行PerformXMLPathQuery時應用程序中斷,因爲它運行內存不足。我能在這裏做什麼?libxml在iphone上分配太多內存
感謝,
馬庫斯
我在iPhone上的libxml解析器出現問題!我使用PerformXMLXPathQuery來解析一個大約有100000行的xml文件。運行PerformXMLPathQuery時應用程序中斷,因爲它運行內存不足。我能在這裏做什麼?libxml在iphone上分配太多內存
感謝,
馬庫斯
你可能想看看的libxml2的xmlTextReader "streaming" interface。
這是一個向前移動的光標,放棄它已處理的輸入數據,並且在向前移動時不會構建大型的,內存密集的DOM。仍然可以使用XPath查詢,限制了子樹必須被擴展(即,複製到內存中的libxml結構中)以查找要搜索的文檔的某些部分。
xmlTextReader接口比在根元素處引入一些XPath查詢要困難得多,但對於文檔大小而言,在內存受限的設備上,這可能是您最好的選擇。
由於類似的原因,我剛剛完成了對xmlTextReader的轉換,並且對於20KB和30MB文檔,在XML處理過程中使用的內存是相同的。
您可以嘗試使用的NSXMLParser獲得唯一的數據要保存內存使用
我們第一次使用NSXMLParser,但是這個解析器會降低數據量...... – Markus 2010-10-27 12:37:39
是否確定問題是內存問題? – 2010-10-27 12:39:46
我這麼認爲,如果我在樂器中運行它,實時字節分配會迅速上升到28.61 MB,然後突然中斷!查看設備日誌時,報告的類型爲:低內存 – Markus 2010-10-27 12:47:23