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

Scala嵌套XML含CDATA解析:更简洁获取Event列表方案咨询

简洁实现方案

可以结合Kotlin的函数式编程特性,搭配XML解析工具简化代码,直接将每个<property>的CDATA内容解析为Event节点,生成目标数组:

方案1:使用JDK原生XML解析(无额外依赖)

先封装XML文本解析工具函数,再通过链式调用完成转换:

import javax.xml.parsers.DocumentBuilderFactory
import org.w3c.dom.Document
import org.xml.sax.InputSource
import java.io.StringReader

// 将字符串XML解析为Document对象
fun parseXml(xmlText: String): Document {
    val factory = DocumentBuilderFactory.newInstance()
    val builder = factory.newDocumentBuilder()
    return builder.parse(InputSource(StringReader(xmlText)))
}

// 一行代码获取所有Event节点数组
val eventNodes = (myXml \ "actionPoint" \ "property")
    .map { parseXml(it.text).documentElement }

方案2:使用kotlinx.xml库(更精简)

如果项目允许引入kotlinx.xml依赖,代码会更简洁:

import kotlinx.xml.parsing.XMLParser

// 直接链式解析转换
val eventNodes = (myXml \ "actionPoint" \ "property")
    .map { XMLParser.parse(it.text).root }

关键优势

  • 用链式调用替代循环,代码结构更紧凑;
  • 解析逻辑封装后可复用,后续维护更方便;
  • 最终eventNodes就是所有<Event>节点组成的数组,可直接获取节点属性(如type、name)和子节点内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:50:43