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

如何从CSV feeder变量中读取XML文件内容为字符串?

解决方案

1. 解析CSV中的读取表达式,实际读取文件内容

CSV里存的"read('classpath:data/XML-Order.txt')"是纯字符串,直接赋值只会输出这段文本,你需要解析这个字符串、提取文件路径后执行实际读取操作:

import org.springframework.core.io.ClassPathResource

// 假设从CSV读取到的order_contents值为readExpr
val readExpr = "read('classpath:data/XML-Order.txt')"
// 提取classpath路径:匹配单引号内的内容
val pathPattern = """read\('(classpath:.+)'\)""".r
val actualPath = readExpr match {
    case pathPattern(path) => path
    case _ => throw new IllegalArgumentException("无效的读取表达式格式")
}
// 读取文件内容为字符串
val xmlContent = scala.io.Source.fromInputStream(new ClassPathResource(actualPath).getInputStream).mkString

这段代码会提取出文件路径,读取XML-Order.txt中的实际XML字符串,而非原表达式文本。

2. 解决SAXParseException错误

触发该错误通常是因为XML字符串直接嵌入<contents>标签时,存在未转义的特殊字符(如<、>、&),或XML结构不合法。对应解决方式:

  • 如果<contents>仅需存储XML文本而非解析它,将读取到的XML字符串包装成CDATA块,让XML解析器将其视为纯文本:
    <contents><![CDATA[${xmlContent}]]></contents>
    
  • 如果需要解析内部XML结构,需确保读取到的XML是完整合法的片段(如单一根节点、特殊字符已转义),若原文件存在语法问题,需先修正文件内容。

额外提示

如果CSV中的读取表达式格式固定,可简化路径提取逻辑(比如直接截取单引号间的内容);读取文件时,Source.fromInputStream会自动管理流资源,也可使用try-with-resources确保资源安全释放。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 02:22:05