0

MuleESB で整数の配列を xml に変換する際に問題があります。

だから私は含むというオブジェクトを持ってUsagePointいますgroups=ArrayOfint [_int=[2]]

私の変換コンポーネントTransform Messageでは、次の変換アプローチを試しましたが、意図的に省略していますns0 namespace:

%namespace ns1 http://schemas.microsoft.com/2003/10/Serialization/Arrays
%type groups = :object {class: "xmlinterface.ArrayOfint"}
--    
 ns0#Groups: {
    ns1#int: payload.groups.int as :object
 },

%namespace ns1 http://schemas.microsoft.com/2003/10/Serialization/Arrays
    %type groups = :object {class: "xmlinterface.ArrayOfint"}
    --    
     ns0#Groups: payload.groups map {
        ns1#int: payload.groups.int as :object
     },

%namespace ns1 http://schemas.microsoft.com/2003/10/Serialization/Arrays
--    
  ns0#Groups: {
     ns1#int: payload.groups
  },

groupint次のメソッド呼び出しを使用して配列を取得することにより、Transformer コンポーネントの直前にフロー変数を設定するとpayload.getGroups().getInt()、結果は[2]Int32 の逆シリアル化エラーになります。

%namespace ns1 http://schemas.microsoft.com/2003/10/Serialization/Arrays
--    
  ns0#Groups: {
    ns1#int: flowVars.groupint
  },

しかしpayload.getGroups().getInt()[0]、整数を取得するように呼び出すと、正常に機能します。私の問題は、配列に 1 つだけではなく、複数の要素が存在する可能性があることです。だから私は言う結果が欲しい:

  <Groups>
    <int>1</int>
    <int>2</int>
    <int>3</int>
    ...
  </Groups>

結果のxmlに1つのint要素しか含めることができない結果ではありません。

私も言ってみましたns0#Groups: payload.groups。では、int の配列を処理する Dataweaver 式をどのように作成すればよいでしょうか?

4

1 に答える 1

0

試してみてください

%namespace ns1 http://schemas.microsoft.com/2003/10/Serialization/Arrays
%type groups = :object {class: "xmlinterface.ArrayOfint"}
--    
 ns0#Groups: {
    (payload.groups.int map {ns1#int: $})
 }

https://docs.mulesoft.com/mule-user-guide/v/3.7/dataweave-reference-documentation#dynamic-elements

于 2015-12-17T18:41:49.577 に答える