我有一個XML結構是這樣的:數據關聯文件
<root>
<index>
<item>item 1</item>
<item>item 2</item>
<!-- many more items -->
<index>
<data>
<row>
<!-- relates to item 1 -->
<cell>1</cell>
<cell>2</cell>
<!-- many more cells -->
</row>
<row>
<!-- relates to item 2 -->
<cell>3</cell>
<cell>4</cell>
<!-- many more cells -->
</row>
<!-- as many rows as there are items in the index -->
</data>
</root>
我試圖創建一個解析器輸出(到一個數據庫)這樣的結構:
item 1 : [1, 2, ...]
item 2 : [3, 4, ...]
...
通常情況下,我會使用sax解析器,構造一個HashMap,當解析器傳遞索引元素時填充鍵,然後添加單元格數據。
但是,該文檔可能包含大量數據,所以我恐怕會遇到內存問題。
我的問題是:我如何用盡可能少的內存使用來解析文件?
我想過的一件事是構建兩個SAX解析器,一個運行在索引上,另一個解析數據。問題是我不知道如何暫停一個分析器,啓動另一個分析器,暫停另一個分析器,重新啓動第一個分析器等等。
這是可能的還是有更好的方法來處理這個?
順便說一句:遺憾的是,我完全不能控制XML的格式。
imho解析xml在你的情況下不會是最耗費內存的操作。我會注意數據庫操作和事務支持。也可能不收集數據集合/地圖(或收集最小數據),而是將其快速刷新到數據庫是有意義的?如果您使用某種ORM解決方案,您應該着眼於ORM會話管理和刷新活動。 – svaor