【问题标题】:Scala: get child nodes count in XMLScala:获取 XML 中的子节点数
【发布时间】:2016-03-20 10:52:11
【问题描述】:

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

我想计算&lt;c&gt; 下的孩子的人数 我试过了 (XML \\ "c").length

但这给出了所有&lt;c&gt; 标签的计数。我无法访问descendant,因为(XML \\ "c") 返回NodeSeq

尝试(XML \\ "c" \\ "_").length 会给出所有记录的总长度。不知道如何访问子节点。有什么想法吗?

编辑: (XML \\ "c" \ "_").length / (XML \\ "c").length 这给出了&lt;c&gt; 下字段的正确计数。但是,我觉得它有点笨拙。需要更好的解决方案。

【问题讨论】:

  • 你需要得到什么? (3, 3, 3) 还是 9?
  • 我只需要 3 个。不是总数 9 或列表 (3,3,3)
  • 我已经编辑了我的答案。在 Scala XPath 中可能再好不过了。

标签: xml scala children


【解决方案1】:

(XML \\ "c" \ "_").length 给出 9(所有“c”个孩子的计数)

((XML \ "c")(0) \ "_").length 给出 3(第一个“c”个孩子的计数)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 2015-02-28
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多