2016-04-05 50 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使用情況的問題。