使用dataweave写入文件时省略xml声明

时间:2016-04-05 07:43:07

标签: xml mule dataweave

我需要编写用于将csv转换为xml的dataweave代码。我的输出xml不应包含xml声明('<?xml version='1.0' encoding='UTF-8'?>')

dataweave code:

%dw 1.0
%output application/xml 
---
parent :{
    child1:payload.input1,
    child2:payload.input2
}

预期产出:

<parent>
  <child1></child1>
  <child2><child2>
</parent>

现在的输出:

<?xml version='1.0' encoding='UTF-8'?>
 <parent>
      <child1></child1>
      <child2></child2>
 </parent>

请建议我在header部分添加指令。感谢

2 个答案:

答案 0 :(得分:0)

据我所知,你没有办法让dataweave不包含该声明,最后是STANDARD xml。 @ ralph-rimorin建议你可以使用XSLT但是对于你的情况我会做一些有点脏但可能更快的一个简单的字符串替换,如下所示。

<set-payload value="#[message.payloadAs(String).replace('<?xml version="1.0" encoding="UTF-8"?>','')]" doc:name="Remove xml header"/>

请记住,这会将XML设置为有效负载中的字符串,而不是DOM对象,但这在大多数mule esb用例中都不是问题。

答案 1 :(得分:0)

使用

%output application/xml writeDeclaration=false