我需要处理由大量独立记录组成的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