XML在Script Mediator中消失

时间:2015-01-11 06:59:13

标签: wso2 wso2esb

我想将一个新的子节点添加到我正在使用API​​代理到WSO2 DSS的XML请求中。

我收到的请求采用以下格式:

<contacts>
  <firstName>Bob</firstName>
  <lastName>Brown</lastName>
</contacts>

我需要在此请求中添加一个“id”节点,我可以从URI变量中检索它。

<contacts>
  <id>1</id>
  <firstName>Bob</firstName>
  <lastName>Brown</firstName>
</contacts>

我尝试过使用“充实”中介,但这似乎只是将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”节点现在只是空白,好像它是在我不知情的情况下过滤的!

如果我可以使用脚本调解器添加此元素会很棒,但我对其他解决方案持开放态度。

1 个答案:

答案 0 :(得分:1)

这实际上是一个非常简单的修复方法。只需使用CDATA部分让XML解析器忽略您的代码。

<![CDATA[ //YOUR CODE WITH XML INLINE// ]]>

请注意,出于某种原因,下次打开序列进行编辑时,WSO2 ESB XML编辑器和UI将删除CDATA部分。我通常只是将XML配置复制到文本文件中,并在需要更新时将其粘贴回配置中。

不是一个完美的解决方案,但它可以帮助你解决问题。