我需要處理由大量獨立記錄組成的XML文檔,例如,如何從大型XML文檔獲取流式Iterator [Node]?
<employees>
<employee>
<firstName>Kermit</firstName>
<lastName>Frog</lastName>
<role>Singer</role>
</employee>
<employee>
<firstName>Oscar</firstName>
<lastName>Grouch</lastName>
<role>Garbageman</role>
</employee>
...
</employees>
在某些情況下,這些都只是大文件,但其他人,他們可能來自數據流源。
我不能只是scala.xml.XmlLoader.load()它,因爲我不想保存整個文檔在內存中(或等待輸入流關閉),當我只需要工作一次一個記錄。我知道我可以使用XmlEventReader將輸入流作爲一系列XmlEvent進行流式處理。然而,這些工作比scala.xml.Node更不方便。
所以我想獲得一個懶惰的迭代器[節點]出這個不知何故,爲了使用上的方便Scala的語法每一個人記錄進行操作,同時保持控制下的內存使用情況。
要做到這一點我自己,我可以XMLEventReader的開始,建立每個匹配的開始和結束標記之間的事件的緩衝區,然後從構建一個節點樹。但是,有沒有更容易忽視的方法?感謝任何見解!
輝煌!這很好。從這個生成器風格的東西到一個迭代器並不難;看到我的其他答案。非常感謝! – 2011-12-16 18:21:04