2015-12-14 111 views
1

指望我已經在XML格式斯卡拉:讓孩子節點XML

val XML = 
<a> 
<b>value_b</b> 
<c> 
    <c_1>value_c_1</c_1> 
    <c_2>value_c_2</c_2> 
    <c_3>value_c_3</c_3> 
</c> 
<b>value_b</b> 
<c> 
    <c_1>value_c_1</c_1> 
    <c_2>value_c_2</c_2> 
    <c_3>value_c_3</c_3> 
</c> 
<b>value_b</b> 
<c> 
    <c_1>value_c_1</c_1> 
    <c_2>value_c_2</c_2> 
    <c_3>value_c_3</c_3> 
</c> 
</a> 

我想<c> 下爲孩子計數我試圖 (XML \\ "c").length

但是這給計全部爲<c>標籤。我無法訪問descendant作爲(XML \\ "c")返回NodeSeq

嘗試(XML \\ "c" \\ "_").length給出所有記錄的總長度。不知道我如何訪問子節點。有任何想法嗎?

編輯: (XML \\ "c" \ "_").length/(XML \\ "c").length這給<c>下領域的正確計數。但是,我覺得它有點笨拙。需要一個更好的解決方案。

+0

你有什麼需要得到什麼? (3,3,3)或9? –

+0

我只需要3個。不是總數9或列表(3,3,3) – kaur

+0

我編輯了我的答案。在Scala XPath中可能不會更好。 –

回答

3

​​給出9(所有 「C」 的孩子數)

((XML \ "c")(0) \ "_").length給出3(第一個 「c」 的孩子數)