2015-12-14 76 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” 的孩子数)