如何使用Scala將xml文檔解析爲流? 我已經在java中使用了Stax API來實現這一點,但我想知道是否有一個「scala」方法來做到這一點。如何使用Scala將xml文檔解析爲流?
回答
使用包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
得到真正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)
}
}
我不得不將我的代碼更改爲val er = new XMLEventReader()。initialize(src),但它看起來像在工作。謝謝! – ScArcher2 2010-05-26 21:03:30
2.7 xml.pull是野蠻的borked,應該完全避免所有,但非常勇敢。 2.8情況大大改善。 – 2010-05-29 00:17:51
即使現在scala.xml.pull仍然不是很好,我建議不要使用它:https://github.com/scala/scala-xml/issues/193 – 2018-02-27 02:22:25
scala.xml.XML.loadFile(fileName: String)
scala.xml.XML.load(url: URL)
scala.xml.XML.load(reader: Reader)
scala.xml.XML.load(stream: InputStream)
還有其他的...
這不會將整個文檔加載到內存中嗎?我想分析它,並在我收到它時處理它,而不是先將整個文檔存儲在內存中。 – ScArcher2 2010-05-25 22:01:04
@ ScArcher2:是的,這些不是流API。 – 2010-05-26 04:33:53
- 1. 如何使用ANTLR解析XML文檔
- 2. Scala:解析連接的XML文檔
- 3. 如何解析XML文檔
- 4. 如何解析XML文檔?
- 5. 解析連續的XML文檔流
- 6. 如何使用VTD-XML庫解析Scala中的XML文件?
- 7. 用scala解析xml
- 8. 如何將xml解析爲「消息」並使用流解析在scala中打印出來?
- 9. 解析XML文檔
- 10. 解析XML文檔
- 11. 解析XML文檔
- 12. 用Javascript解析xml文檔
- 13. 使用NSXMLParser從連續流解析多個XML文檔
- 14. 使用JDOM將文本解析爲XML
- 15. 使用.Descendents解析XML文檔(值)
- 16. 使用XPath解析XML文檔
- 17. 使用JTree的解析的XML文檔
- 18. 使用Ruby循環解析XML文檔
- 19. 如何從單個流中解析多個XML文檔?
- 20. 如何解析不同的XML文檔?
- 21. 如何解析Blackberry中的xml文檔?
- 22. 解析HTML/XML文檔如何工作?
- 23. 如何解析這個XML文檔?
- 24. 將XML /文本文件解析爲XML?
- 25. VB.Net:解析XML文檔
- 26. 解析XML文檔,C#
- 27. 解析XML文檔和
- 28. 解析soap xml文檔php
- 29. 如何使用Python解析XML文檔包含字符「&」
- 30. 如何在Eclipse IDE中使用Schema 1.1解析XML文檔?
有沒有人知道比解析「hello world」更復雜/完整的例子? – ScArcher2 2010-05-26 21:56:15
我知道這件事,因爲我曾與之交談的人正在使用它。你想做什麼,你有什麼問題?詢問更多問題。這將使下一個想要使用它的人更容易。 :-) – 2010-05-26 23:48:42