How do I parse an xml document as a stream using Scala?
Use package scala.xml.pull. Snippet taken from the Scaladoc for Scala 2.8:
import scala.xml.pull._import scala.io.Sourceobject reader { val src = Source.fromString("<hello><world/></hello>") val er = new XMLEventReader(src) def main(args: Array[String]) { while (er.hasNext) Console.println(er.next) }}
You can call toIterator
or toStream
on er
to get a true Iterator
or Stream
.
And here's the 2.7 version, which is slightly different. However, testing it seems to indicate it doesn't detect the end of the stream, unlike in Scala 2.8.
import scala.xml.pull._import scala.io.Sourceobject reader { val src = Source.fromString("<hello><world/></hello>") val er = new XMLEventReader().initialize(src) def main(args: Array[String]) { while (er.hasNext) Console.println(er.next) }}