Scala XML 使用 Xpath 解析

Scala XML parsing with Xpath

我正在尝试使用 scala.xml.XML 在 Scala 中解析 XML 并且我想避免必须通过 XPath 将字符串传递给 XML Elem 以获得 NodeSeq .

必须在多个地方指定像 elem \ "tag1" \ "tag2" \ "@tagN" 这样的字符串,这看起来很脆弱且重复。

大多数 Scala XML 解析教程都让您使用 XPath 硬编码字符串解析 jank - elem \ "tag1" \ "tag2" \ "@tagN" - 无处不在。

是否可以编写一种方法,通过 XPath 和 returns NodeSeq 通过 Seq[String] 搜索 Elem?

该方法类似于:

def getNodeFromXml(elem: Elem, tags: Seq[String]): NodeSeq = {
  Returns a NodeSeq elem \ tags(0) \ tags(1) \ ... \ tags(tags.length)
}

谢谢

类似于:

scala> import xml._
import xml._

scala> val x = <top><middle><bottom>text</bottom></middle></top>
x: scala.xml.Elem = <top><middle><bottom>text</bottom></middle></top>

scala> val names = Seq("middle","bottom")
names: Seq[String] = List(middle, bottom)

scala> val ns: NodeSeq = x
ns: scala.xml.NodeSeq = <top><middle><bottom>text</bottom></middle></top>

scala> names.foldLeft(ns)((e,s) => e \ s)
res2: scala.xml.NodeSeq = NodeSeq(<bottom>text</bottom>)