2016-03-08 14 views
0

條件我有一個輸入XML文件,如下,其中我有LineErrorFor循環,並且當在騾dataweaver

<LineErrors> 
    <LineError> 
     <LineErrorType>CARGO REPORT SAC</LineErrorType> 
     <LineErrorID>CARGO REPORT SAC</LineErrorID> 
     <LineErrorDescription>N/A</LineErrorDescription> 
    </LineError> 
    <LineError> 
     <LineErrorType>CONSOLIDATED STATUS</LineErrorType> 
     <LineErrorID>CONSOLIDATED STATUS</LineErrorID> 
     <LineErrorDescription>HELD</LineErrorDescription> 
    </LineError> 
</LineErrors> 

現在dataweaver我生產,其中一個屬性被映射到固定值另一個XML文件的多個段如果有任何LineError段包含LineErrorDescription字段值「持有」。例如ID =「X」如果LineErrors.LineError.LineErrorDescription ==「保持」

所以我的問題是如何在dataweaver我們可以遍歷和比較。請分享,如果你有任何線索。

回答

2

您可以使用過濾器和映射到一起,試試這個 -

%dw 1.0 
%output application/xml 
--- 
payload.LineErrors.*LineError filter ($.LineErrorDescription == 'HELD') map { 
    id: 'X' 
} 
+0

下面的腳本產生AMAP。但我的輸出是一個XML。所以該結構是一些什麼樣的<主機出站消息> <事件ID =「X」 />。你可以請私人我的腳本如何創建這個XML與您的解決方案。 –

1

有你看了documentation for DataWeave?我建議以此爲起點。從應該讓你去該文件的一個例子如下:

用下面的輸入:

<users> 
    <user> 
    <name>Mariano Achaval</name> 
    <phone>152235465654</phone> 
    <street>Laprida 924</street> 
    </user> 
    <user> 
    <name>Martin Alejandro Cousido</name> 
    <phone>15332255555</phone> 
    <street>Acassuso 2280</street> 
    </user> 
</users> 

使用下面DW腳本 - 利用產生secondName方式注:

%dw 1.0 
%output application/json 
%function words(name) name splitBy " " 
--- 
contacts: payload.users.*user map using (parts = words($.name)){ 
    firstName: parts[0], 
    (secondName: parts[1]) when (sizeOf parts) > 2, 
    lastName: parts[-1], 
    email:((lower $.name) replace " " with ".") ++ "@acme.com", 
    address: $.street 
} 

產生以下輸出:

{ 
    "contacts": [ 
    { 
     "firstName": "Mariano", 
     "lastName": "Achaval", 
     "email": "[email protected]", 
     "address": "Laprida 924" 
    }, 
    { 
     "firstName": "Martin", 
     "secondName": "Alejandro", 
     "lastName": "Cousido", 
     "email": "[email protected]", 
     "address": "Acassuso 2280" 
    } 
    ] 
} 

我建議關閉您試圖實現你在你原來的問題已經解釋了,應該你來遇到任何問題,提出一個新的問題與您正在使用以達到DW腳本的例子在上面的例子中的回請進一步諮詢。這樣,你就能夠瞄準更具體的問題,而不是有那麼做的工作適合你。

希望這會有所幫助。