如何使用给定的xpath标量从xml检索所有节点

时间:2019-04-17 09:00:52

标签: xml scala xpath

假设我有一个像这样的XML

val myXml: NodeSeq = scala.xml.Utility.trim(<a>
    <b>
      <c>Mom</c>
    </b>
    <b>
      <c>Dad</c>
    </b>
    <notb>
      <c>foo</c>
      <c>bar</c>
    </notb>
  </a>)

如何从这样的xpath中检索“妈妈”和“爸爸”? "b/c"

1 个答案:

答案 0 :(得分:2)

使用foldLeft,可以检索所有元素

"b/c"
  .split('/')
  .foldLeft(myXml)((node, path) => node \ path)

输出:

res0: scala.xml.NodeSeq = <c>Mom</c><c>Dad</c>

甚至可以使用“通配符”来匹配每个孩子

"_/c"
  .split('/')
  .foldLeft(myXml)((node, path) => node \ path)

输出:

res1: scala.xml.NodeSeq = <c>Mom</c><c>Dad</c><c>foo</c><c>bar</c>