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

WSO2 PayloadFactory嵌入XML被转为JSON的问题解决咨询

解决WSO2 PayloadFactory保留XML字符串的问题

问题原因

当前配置中,detail参数使用evaluator="xml"时,WSO2会自动解析XML内容并将其转换为JSON格式,导致最终输出的details字段是JSON结构而非原始XML字符串。

解决方案

通过调整参数的解析器类型,或提前转义XML内容,让PayloadFactory将XML作为纯字符串嵌入JSON结构中。

方法1:使用text解析器+XML转义

  1. 先通过脚本中介对原始XML进行转义(将<替换为&lt;,>替换为&gt;):
<script language="js">
    var rawXml = mc.getProperty('detail');
    var escapedXml = rawXml.replace(/</g, '&lt;').replace(/>/g, '&gt;');
    mc.setProperty('escapedDetail', escapedXml);
</script>
  1. 修改PayloadFactory配置,将detail参数的解析器改为text,引用转义后的属性:
<payloadFactory media-type="json">
  <format>{
    "Customer": {
        "name": "$1",
        "details": "$2"
       }
  }</format>
  <args>
     <arg evaluator="xml" expression="get-property('name')"/>
     <arg evaluator="text" expression="get-property('escapedDetail')"/>
  </args>
</payloadFactory>

方法2:提取CDATA中的XML字符串

如果原始XML是以CDATA格式存储在属性中(如<![CDATA[<id>123</id>]]>),可直接通过XPath提取CDATA内的文本内容:

<payloadFactory media-type="json">
  <format>{
    "Customer": {
        "name": "$1",
        "details": "$2"
       }
  }</format>
  <args>
     <arg evaluator="xml" expression="get-property('name')"/>
     <arg evaluator="xml" expression="get-property('detail')/text()"/>
  </args>
</payloadFactory>

预期输出

修改后生成的JSON将符合需求:

{
    "Customer": {
        "name": "Adam",
        "details": "&lt;id&gt;123&lt;/id&gt;"
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:30:49