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

Scala解析XML时如何匹配获取所有_TimeSeries后缀节点的NodeSeq

实现方法

Scala 标准 XML 库没有原生支持后缀匹配的节点查找语法,你可以用下面两种简便方式实现需求:

1. 直接过滤(无需额外定义)

如果要查找所有层级下名称以_TimeSeries结尾的节点,一行代码即可实现:

val timeSeriesNodes = document \\ "_" filter (_.label.endsWith("_TimeSeries"))

如果只需要查找直接子节点,改成下面的写法:

val timeSeriesNodes = document \ "_" filter (_.label.endsWith("_TimeSeries"))

其中\\ "_" / \ "_" 表示先匹配所有元素节点,再通过_.label.endsWith筛选符合后缀要求的节点,最后返回的结果就是你需要的NodeSeq类型。

2. 自定义扩展方法(实现你要的简洁调用格式)

如果你想实现类似document "*_TimeSeries"的调用形式,可以通过隐式类给NodeSeq扩展自定义方法:

import scala.xml.NodeSeq

implicit class XmlSuffixSearchOps(ns: NodeSeq) {
  // 匹配直接子节点的后缀查找
  def \*(suffix: String): NodeSeq = ns \ "_" filter (_.label.endsWith(suffix))
  // 匹配所有层级子节点的后缀查找
  def \\*(suffix: String): NodeSeq = ns \\ "_" filter (_.label.endsWith(suffix))
}

定义完成后就可以直接按你想要的风格调用:

// 查找所有_TimeSeries结尾的节点
val result = document \\* "_TimeSeries"

内容的提问来源于stack exchange,提问作者K D

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:24:05