2015-12-17 5 views
1

Я пытаюсь написать переплетение данных, чтобы добавить цену в ответ xml.Как обрабатывать отклик в mule ESB

Запрос XML выглядит

<?xml version="1.0" encoding="UTF-8"?> 
<UniversityResponse xmlns="urn:abc:api:Components"> 
    <Timestamp>2015-12-16T22:05:41.229Z</Timestamp> 
    <Dept>IT</Dept> 
    <Fees> 
     <Fee> 
      <Name>John</Name> 
      <Fee currencyID="USD">1.0</Fee> 
     </Fee> 
     <Fee> 
      <Name>Enrique</Name> 
      <Fee currencyID="USD">3.0</Fee> 
     </Fee> 
     <Fee> 
      <Name>Mary</Name> 
      <Fee currencyID="USD">2.0</Fee> 
     </Fee> 
     <Fee> 
      <Name>Meena</Name> 
      <Fee currencyID="USD">0.5</Fee> 
     </Fee> 
    </Fees> 
</UniversityResponse> 

В настоящее время я писал как

%dw 1.0 
%namespace ns0 urn:abc:api:Components 
%output application/xml 
--- 
TotalFees:{ 
    plus : payload.ns0#UniversityResponse.ns0#Fees.*ns0#Fee[0].ns0#Fee + 
    payload.ns0#UniversityResponse.ns0#Fees.*ns0#Fee[0].ns0#Fee + 
    payload.ns0#UniversityResponse.ns0#Fees.*ns0#Fee[1].ns0#Fee + 
    payload.ns0#UniversityResponse.ns0#Fees.*ns0#Fee[2].ns0#Fee + 
    payload.ns0#UniversityResponse.ns0#Fees.*ns0#Fee[3].ns0#Fee 
} 

Выход:

<TotalFees> 
    <plus>6.5</plus> 
</TotalFees> 

Как может я цикл сложный тег в XML-ответ?

В принципе, я хочу создать один цикл для UniversityResponse/Fees. Внутри цикла я хочу написать что-то вроде Plus = Plus + «UniversityResponse/Fees/Fee [counter] .Fee«

ответ

1

Это было своего рода головной убор, потому что я искал функцию SUM в документах, а не в документы, но это на языке :)

-

%dw 1.0 
%output application/xml 
%namespace ns0 urn:abc:api:Components 
--- 

TotalFees: plus: sum payload.ns0#UniversityResponse.ns0#Fees.*ns0#Fee.ns0#Fee 

<?xml version='1.0' encoding='UTF-8'?> 
<TotalFees> 
    <plus>6.5</plus> 
</TotalFees> 
+0

извинениями. Я хотел добавить все сборы под тегом «fee» и сохранить в теге «Плюс». Я уточнил свой вопрос с большим количеством объяснений. В основном я хочу создать один цикл для UniversityResponse/Fees. Внутри цикла я хочу написать что-то вроде Plus = Plus + «UniversityResponse/Fees/Fee [counter] .Fee« – Simbu

+0

Обновлено мой ответ – JoostD

+0

Спасибо! :) Это сработало для меня. Простая функция суммы сделала трюк без цикла. :) – Simbu