Как я могу разобрать документ XML как поток, используя Scala? - PullRequest
16 голосов
/ 26 мая 2010

Как мне разобрать документ XML как поток, используя Scala? Для этого я использовал Stax API в Java, но я хотел бы знать, есть ли способ «scala» для этого.

Ответы [ 2 ]

27 голосов
/ 26 мая 2010

Используйте пакет scala.xml.pull. Фрагмент, взятый из Скаладока для Скалы 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)
  }
}

Вы можете позвонить toIterator или toStream на er, чтобы получить Iterator или Stream.

А вот версия 2.7, которая немного отличается. Однако тестирование показывает, что он не обнаруживает конец потока, в отличие от 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 голосов
/ 26 мая 2010
scala.xml.XML.loadFile(fileName: String)
scala.xml.XML.load(url: URL)
scala.xml.XML.load(reader: Reader)
scala.xml.XML.load(stream: InputStream)

Есть и другие ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...