我想将一个新的子节点添加到我正在使用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”节点现在只是空白,好像它是在我不知情的情况下过滤的!
如果我可以使用脚本调解器添加此元素会很棒,但我对其他解决方案持开放态度。
答案 0 :(得分:1)
这实际上是一个非常简单的修复方法。只需使用CDATA部分让XML解析器忽略您的代码。
<![CDATA[ //YOUR CODE WITH XML INLINE// ]]>
请注意,出于某种原因,下次打开序列进行编辑时,WSO2 ESB XML编辑器和UI将删除CDATA部分。我通常只是将XML配置复制到文本文件中,并在需要更新时将其粘贴回配置中。
不是一个完美的解决方案,但它可以帮助你解决问题。