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

后端 未结 2 1970
野的像风
野的像风 2020-12-14 08:51

How do I parse an xml document as a stream using Scala? I\'ve used the Stax API in java to accomplish this, but I\'d like to know if there is a \"scala\" way to do this.

相关标签:
2条回答
  • 2020-12-14 09:35
    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...

    0 讨论(0)
  • 2020-12-14 09:41

    Use package scala.xml.pull. Snippet taken from the Scaladoc for Scala 2.8:

    import scala.xml.pull._
    import scala.io.Source
    object 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.Source
    
    object 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)
      }
    }
    
    0 讨论(0)
提交回复
热议问题