2015-12-21 57 views
0

我在dataweave中進行了轉換。esb mule中的DataWeave轉換問題

我從Mysql數據庫獲取輸入。輸入有效載荷類型是List-Map。我的dataweave編輯器有以下代碼。

%dw 1.0 
%namespace ns1 urn:abc:api:Components 
%output application/xml 
--- 
ns1#"ItemRequest":{ 
    ns1#"Requester": 
     ns1#ac: payload.time_max, 

     ns1#"ErrorLanguage": "en_US", 
     ns1#"WarningLevel": "High" 
} 

我的輸出

<?xml version='1.0' encoding='UTF-8'?> 
<ns1:ItemRequest xmlns:ns1="urn:abc:api:Components"> 
    <ns1:Requester> 
    <ns1:ac> 
     <time_max>1</time_max> 
    </ns1:ac> 
    </ns1:Requester> 
    <ns1:ErrorLanguage>en_US</ns1:ErrorLanguage> 
    <ns1:WarningLevel>High</ns1:WarningLevel> 
</ns1:AddItemRequest> 

我不知道爲什麼我收到標籤創建under'ac」元素在我與輸出‘time_max’。 'Time_max'是MySQL表中的列名。但我不想在輸出xml中添加列。我們如何避免這個標籤創建?

預期輸出是

<?xml version='1.0' encoding='UTF-8'?> 
<ns1:ItemRequest xmlns:ns1="urn:abc:api:Components"> 
    <ns1:Requester> 
    <ns1:ac>1</ns1:ac> 
    </ns1:Requester> 
    <ns1:ErrorLanguage>en_US</ns1:ErrorLanguage> 
    <ns1:WarningLevel>High</ns1:WarningLevel> 
</ns1:AddItemRequest> 

回答

0

我已經通過鍵入下面的代碼解決了問題。

%dw 1.0 
%namespace ns1 urn:abc:api:Components 
%output application/xml 
--- 
ns1#"ItemRequest":{ 
    ns1#"Requester": 
     ns1#ac: payload[0].time_max, 
     ns1#"ErrorLanguage": "en_US", 
     ns1#"WarningLevel": "High" 
} 

片段的下面一行是那樣神奇。我已經包含數組索引值。

ns1#ac: payload[0].time_max 
+0

看起來像你的問題是輸入是一個地圖列表,我們經常從數據庫連接器得到輸出。假設輸入是地圖,則寫入原始DWL。也許爲未來的讀者添加輸入模式的問題? –