阅读XML文件中的文本内容

时间:2013-04-04 17:18:37

标签: xml scala

假设我有一个类似以下的XML文件:

<conf>
  <something>
    blablabla
  </something>
</conf>

我想检索字符串blablabla

我尝试过:

val data = XML.loadFile("conf.xml")
val st = data \\ "conf" \\ "something"
println(st)

但作为输出我得到了:

<something>blablabla</something>

我添加了代码行:

st match {
      case <something>{ txt }</something> => println(txt)
}

但我有scala.MatchError

我可以尝试什么?

你能帮我一下吗?

2 个答案:

答案 0 :(得分:5)

您需要在选定的text上调用其他NodeSeq方法,以便在xml 元素中提取 text 子节点

val data = XML.loadFile("conf.xml")
val st = data \\ "conf" \\ "something"
println(st.text)

我建议你trim结果,除非你想要一些额外的免费空间......

答案 1 :(得分:1)

你可以考虑Anti-XML,这是一个很受欢迎的项目,但现在有点不受维护,所以你可能不得不自己交叉编译。

它允许您选择比这更好的文本。

参见一些例子:

 "parse an elem with text" in {
  fromString("<test>This is a test</test>") mustEqual elem("test", Text("This is a test"))
 }

https://github.com/djspiewak/anti-xml/blob/master/src/test/scala/com/codecommit/antixml/XMLSpecs.scala