2013-07-09 56 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從根。