How do I parse an xml document as a stream using Scala? How do I parse an xml document as a stream using Scala? xml xml

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)  }}


scala.xml.XML.loadFile(fileName: String)scala.xml.XML.load(url: URL)scala.xml.XML.load(reader: Reader)scala.xml.XML.load(stream: InputStream)

There are others...