首页 > 解决方案 > 在scala中过滤Elem的子节点?

问题描述

我正在尝试访问一些看起来像这样的 XML 的子节点:

<msgGrp>
    <msg>a</msg>
    <msg>b</msg>
     <x>c</x>
     <y>d</y>
     <msg>e</msg>
<msgGrp>

如您所见,可以有任意数量的“msg”元素,并且恰好是所有其他类型的元素之一。我想写一个函数来只抓取味精元素,然后只抓取非味精元素。我想出了这样的事情:

val messages    = n \ "msg"
val non_mesages = (n \ "_").filter(_.label != "msg")

但是有没有更简洁的方式来表达“标签不是'msg'的任何消息”?

标签: xmlscala

解决方案


val (messages, non_messages) = (n \ "_").partition(_.label == "msg")

推荐阅读