2017-05-17 8 views
0

私はいくつかのXMLを生成するdataweaveスクリプトを持っています。dataweave 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: { 

       } 
      } 
     } 
    } 
} 

それはどのように私はルート要素でXML名前空間宣言を出力するdataweaveスクリプトを変更することができます

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

...このような何かを生成します。これが何をすべき

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

答えて

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: { 

       } 
      } 
     } 
    } 
+0

ありがとう!これはフェールセーフの解決策ですか、それとも私が知る必要のあるトラップがありますか? – Richie

+0

はい私はそれと何の問題もないはずだと思います.. –

+0

@AnirbanSenChowdharyこの解決方法には、最初のものと共にns:name = ""属性も含まれています。それに対する解決策はありますか? –

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: { 

       } 
      } 
     } 
    } 
} 
+0

としていいえ、あなたはとにかく 'GetVehDetails'上の別の名前空間の定義を取得します。 – Yevgeniy

+0

無効なdwスクリプト – Richie

+0

変換メッセージで無効です。実行しようとします –

関連する問題