2

假设我有一个 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.

我可以尝试什么?

你能给我一些帮助吗?

4

2 回答 2

5

您需要在所选内容上调用其他text方法NodeSeq来提取xml元素中的文本子节点

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

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

于 2013-04-04T18:24:56.823 回答
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

于 2013-04-04T18:17:27.803 回答