Как проанализировать XML-документ как поток с помощью Scala? Я использовал API-интерфейс Stax в java для этого, но я хотел бы знать, есть ли способ "scala".
Как анализировать XML-документ как поток с помощью Scala?
Ответ 1
Используйте пакет scala.xml.pull. Фрагмент, взятый из Scaladoc для 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)
}
}
Вы можете вызвать toIterator
или toStream
на er
, чтобы получить true 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)
}
}
Ответ 2
scala.xml.XML.loadFile(fileName: String)
scala.xml.XML.load(url: URL)
scala.xml.XML.load(reader: Reader)
scala.xml.XML.load(stream: InputStream)
Есть другие...