Scala:通过xml节点迭代

时间:2013-07-09 14:07:47

标签: xml scala

迭代这个没有问题:

<entries>
    <entry>
    <name>Kitten</name>
    <special>Yup</special>
    </entry>
    <entry>
    <name>Gato</name>
    <special>Nope</special>
    </entry>
</entries>

采用这种方法

for(entry <- data)
...

但现在我尝试在一个条目中进行迭代

即:

<entry>
<name>Kitten</name>
<special>Yup</special>
</entry>

我实际上无法通过名称然后继续进行特殊处理,它只是将此节点视为一个项目,并且只经历一个周期。我如何浏览每一个元素?

2 个答案:

答案 0 :(得分:3)

使用child方法,或许?

例如,

for (bar <- <foo><bar><kv/></bar><bar><kv/></bar></foo>.child; kv <- bar.child) {println (kv)}

打印

<kv/>
<kv/>

答案 1 :(得分:2)

如果你想要一个来自root的子元素列表,无论深度如何,那么你可以这样做:

val elems = xml.descendant.collect{case e:Elem => e}

结果elems将是List[Elem],表示来自根目录的任何子Elem