You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala中如何对XML的Elem元素子节点进行过滤筛选?

优化方案

你可以用下面两种更简洁的写法实现需求:

  1. 用filterNot替换原有的filter逻辑
    语义上更直白,直接表达「排除标签为msg的元素」的逻辑,不需要写否定判断:
val nonMessages = (n "_").filterNot(_.label == "msg")
  1. 更推荐用partition一次性拆分两类节点
    你本来就需要同时提取msg和非msg两类集合,用partition只需要遍历一次节点就能得到两个结果,性能更好,代码也更精简:
// 第一个返回值是所有msg元素集合,第二个是所有非msg元素集合
val (messages, nonMessages) = (n "_").partition(_.label == "msg")

如果你用的是Scala标准XML库,写法逻辑也完全一致,只是子节点获取方式调整为child方法即可:

val (messages, nonMessages) = msgGrp.child.partition(_.label == "msg")

内容的提问来源于stack exchange,提问作者Salim Fadhley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 17:21:03