2016-04-05 24 views
1

我需要编写用于将csv转换为xml的数据编码代码。我的输出xml不应该包含xml声明('<?xml version='1.0' encoding='UTF-8'?>')使用dataweave写入文件时省略xml声明

dataweave代码:

%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> 

请建议我在报头部分要添加的指令。谢谢

+0

嗨@masetti,我发现的唯一的事情就是使用XSLT来省略xml声明。请参阅此链接:http://stackoverflow.com/questions/14800746/need-to-remove-xml-version-1-0-encoding-utf-16-from-the-xml –

回答

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对象的字符串,但这不是在大多数的骡子ESB使用情况的问题。