迭代具有相同名称的XML标记

时间:2016-12-16 18:37:28

标签: scala akka

我有这个XML文本:

<apps>
  <app><id>"abcde"</id></app>
  <app><id>"xyz"</id></app>
  <app><id>"bcn"</id></app>
</apps>

我正在使用库scala.xml来处理它。

我想在for循环中迭代app标记,如下所示:

(xmlText \\ "apps" \\ "app").foreach(app => {
   //do something
}

但是,在这种情况下,我只能获得第一个app标记。

如何指定我想要第二张,第三张等等?

1 个答案:

答案 0 :(得分:1)

适合我:

import scala.xml.Elem
import scala.xml.XML

object TagIter {
  val xmlText = <apps>
                  <app><id>"abcde"</id></app>
                  <app><id>"xyz"</id></app>
                  <app><id>"bcn"</id></app>
                </apps>
  def main(args: Array[String]) {
    (xmlText \\ "apps" \\ "app").foreach { app =>
      //do something
      println(app.text)
    }
  }
}

"abcde"
"xyz"
"bcn"

您的代码肯定会遍历所有节点。如果您只想在第N个节点上执行操作,则可以添加一个变量来跟踪到目前为止您看到的数量。

也是这样: https://stackoverflow.com/questions/4468461/select-nth-child-in-xquery-select-next-element

如果将索引应用于表达式,则选择一个节点:

(xmlText \\ "apps" \\ "app")(1)
"xyz"