XML 在 Script Mediator 中消失
XML Disappears in Script Mediator
我想向 XML 请求添加一个新的子节点,我正在使用 API.
代理到 WSO2 DSS
我收到的请求格式如下:
<contacts>
<firstName>Bob</firstName>
<lastName>Brown</lastName>
</contacts>
我需要向此请求添加一个 "id" 节点,以便我可以从 URI 变量中检索。
<contacts>
<id>1</id>
<firstName>Bob</firstName>
<lastName>Brown</firstName>
</contacts>
我试过使用 "enrich" 调解器,但这似乎只是将 ID 节点包裹在名字和姓氏节点周围。
所以我求助于使用脚本中介来修改请求。这就是我想要做的:
//Get XML Request from message context
var request= mc.getPayloadXML();
//Create a child node using standard E4X notation
var child = <id>1</id>;
//Append this XML to the request
request.appendChild(child);
//Replace the payload
mc.setPayloadXML(request);
每次我尝试提交此代码时,WSO2 ESB API UI 都说一切都很酷。但是当我检查底层 XML 配置时,它并不酷。我定义的 "id" 节点现在只是空白,好像它在我不知情的情况下被过滤了!
如果我可以使用脚本中介添加此元素,那就太好了,但我愿意接受其他解决方案。
这实际上是一个非常简单的修复。只需使用 CDATA 部分让 XML 解析器忽略您的代码。
<![CDATA[ //YOUR CODE WITH XML INLINE// ]]>
请注意,出于某种原因,WSO2 ESB XML 编辑器和 UI 将在您下次打开序列进行编辑时删除 CDATA 部分。我通常只是将 XML 配置复制到一个文本文件,并在需要更新时将其粘贴回配置中。
这不是一个完美的解决方案,但它会让你越过这条线。
我想向 XML 请求添加一个新的子节点,我正在使用 API.
代理到 WSO2 DSS我收到的请求格式如下:
<contacts>
<firstName>Bob</firstName>
<lastName>Brown</lastName>
</contacts>
我需要向此请求添加一个 "id" 节点,以便我可以从 URI 变量中检索。
<contacts>
<id>1</id>
<firstName>Bob</firstName>
<lastName>Brown</firstName>
</contacts>
我试过使用 "enrich" 调解器,但这似乎只是将 ID 节点包裹在名字和姓氏节点周围。
所以我求助于使用脚本中介来修改请求。这就是我想要做的:
//Get XML Request from message context
var request= mc.getPayloadXML();
//Create a child node using standard E4X notation
var child = <id>1</id>;
//Append this XML to the request
request.appendChild(child);
//Replace the payload
mc.setPayloadXML(request);
每次我尝试提交此代码时,WSO2 ESB API UI 都说一切都很酷。但是当我检查底层 XML 配置时,它并不酷。我定义的 "id" 节点现在只是空白,好像它在我不知情的情况下被过滤了!
如果我可以使用脚本中介添加此元素,那就太好了,但我愿意接受其他解决方案。
这实际上是一个非常简单的修复。只需使用 CDATA 部分让 XML 解析器忽略您的代码。
<![CDATA[ //YOUR CODE WITH XML INLINE// ]]>
请注意,出于某种原因,WSO2 ESB XML 编辑器和 UI 将在您下次打开序列进行编辑时删除 CDATA 部分。我通常只是将 XML 配置复制到一个文本文件,并在需要更新时将其粘贴回配置中。
这不是一个完美的解决方案,但它会让你越过这条线。