我有一个产生一些xml的数据编辑脚本。
%dw 1.0
%output application/xml skipNullOn="everywhere"
%namespace soap http://www.w3.org/2003/05/soap-envelope
%namespace ns http://www.mycompany/2015/07
---
{
soap#Envelope: {
soap#Header: {
},
soap#Body: {
ns#GetVehDetails: {
}
}
}
}
}
它产生这样的东西......
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header/>
<soap:Body>
<ns:GetVehDetails xmlns:ns="http://www.mycompany/2015/07">
如何更改dataweave脚本以在根元素处输出xml名称空间声明:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:ns="http://www.mycompany/2015/07">
<soap:Header/>
<soap:Body>
<ns:GetVehDetails>
答案 0 :(得分:3)
这是一个旧的Dataweave问题,唯一的解决方法如下:
您需要添加一个虚拟属性@(ns#name:"")
,其中包含您希望位于最顶层根标记顶部的命名空间,例如Envelope
标记
%dw 1.0
%output application/xml skipNullOn="everywhere"
%namespace soap http://www.w3.org/2003/05/soap-envelope
%namespace ns http://www.mycompany/2015/07
---
{
soap#Envelope @(ns#name:""): {
soap#Header: {
},
soap#Body: {
ns#GetVehDetails: {
}
}
}
}
答案 1 :(得分:0)
这应该可以解决问题。
%dw 1.0
%output application/xml skipNullOn="everywhere"
%namespace soap http://www.w3.org/2003/05/soap-envelope
%namespace ns http://www.mycompany/2015/07
---
{
soap#Envelope @("xmlns:ns":'http://www.mycompany/2015/07'): {
soap#Header: {
},
soap#Body: {
ns#GetVehDetails: {
}
}
}
}
}