如何使用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