2017-02-20 62 views
0

輸入查詢條件dataweave功能騾子Dataweave如何遍歷和過濾過的XML標記和

<root> 
    <client> 
     <name>abc<name> 
     <status>success</status> 
    </client> 
    <client> 
     <name>def<name> 
     <status>success</status> 
    </client> 
    <client> 
     <name>ghi<name> 
     <status>success</status> 
    </client> 
    <client> 
     <name>jkl<name> 
     <status>failed</status> 
    </client> 
    <client> 
     <name>mno<name> 
     <status>success</status> 
    </client> 
</root> 

預期輸出:

<root> 
    <clients> 
    <name>abc<name> 
    <name>def<name> 
    <name>ghi<name> 
    ........ 
    </clients> 
    <status>false</status> // if all status are success then true otherwise false 
</root> 

在這裏我可以能夠遍歷每個XML使用dataweave標記客戶端標籤下的名稱值並將其映射。但我必須爲所有狀態映射單個輸出。 即,當所有的都成功我的狀態將是真實的,如果任何一個狀態失敗,我的狀態將是錯誤的。 爲此,我們必須編寫一個函數,它將迭代每個xml標記,並且必須根據條件返回trur或false輸出。

謝謝,

回答

2

過濾狀態列表等於「失敗」。如果它沒有返回記錄,則表示所有狀態都是成功的,然後是真實的否則(它返回多個記錄)false。

status: (sizeOf (payload.root.*client.status filter $ == "failed")) == 0 

或者

status: not (payload.root.*client.status contains "failed")