我有这个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
标记。
如何指定我想要第二张,第三张等等?
答案 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"