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

Mulesoft如何获取Web Service Consumer响应中的Document字段值

Mule中提取Web Service Consumer响应Document字段实现方案

该需求完全可实现,提取失败的核心原因是返回结构存在两层嵌套XML,且内层XML做了HTML转义处理:外层是Web Service调用返回的SOAP响应XML,wsImprXMLResult节点内的内容是被转义的XML字符串,无法直接作为XML节点解析。

实现逻辑(基于Mule 4 DataWeave 2.0)

  1. 从Web Service Consumer的返回结果中提取body字段,解析为外层XML对象
  2. 提取wsImprXMLResult节点的字符串内容,执行HTML转义解码
  3. 将解码后的字符串解析为内层XML对象,直接提取Document节点值

示例代码

%dw 2.0
import decodeHtml from dw::core::Strings
output application/java
---
// 解析外层SOAP响应XML
var outerXml = payload.body as Xml
// 提取转义的内层XML字符串并解码
var decodedInnerXml = decodeHtml(outerXml.wsImprXMLResponse.`wsImprXMLResult` as String)
// 解析内层XML并提取Document字段
(decodedInnerXml as Xml).ArrayOfWsLabel.wsLabel.Document as String

注意事项

  • 若外层XML命名空间导致节点无法识别,可在解析XML时指定命名空间配置,或通过*忽略命名空间取值,示例:outerXml.*wsImprXMLResponse.*wsImprXMLResult
  • 若返回结果中存在多个wsLabel节点,可通过索引定位目标节点,示例:innerXml.ArrayOfWsLabel.wsLabel[0].Document
  • Mule 3环境可通过MEL实现:先提取payload.body用XmlParser解析外层节点,调用org.apache.commons.lang.StringEscapeUtils.unescapeHtml4解码内层字符串,再二次解析XML提取目标字段即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:21:02