2013-07-09 53 views
2

是没有问题的,通过这个迭代:斯卡拉:通过一个XML节点进行迭代

<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> 

我实际上不能通过名称,然后继续进行特殊处理,它只是将此节点视为一个项目,并且只会经历一个循环。我如何检查每一个元素?

回答

3

child方法,也许?

例如,

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

打印

<kv/> 
<kv/> 
2

如果你想从根子元素的列表,无论深度的,那么你可以这样做:

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

由此产生的elems将代表List[Elem]代表任何孩子Elem从根。