2016-05-03 35 views
0

在DataWeave循環我有其中在我需要提取LoadReferenceNumber和分配給其當LoadReferenceNumberTypeMB在騾數據編織內發起的可變的要求,下面是XML在MuleSoft

<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 
 
<CIS> 
 
<LoadReferenceNumberList> 
 
\t \t <LoadReferenceNumberType>MB</LoadReferenceNumberType> 
 
\t \t <LoadReferenceNumber>8070296</LoadReferenceNumber> 
 
\t </LoadReferenceNumberList> 
 
\t <LoadReferenceNumberList> 
 
\t \t <LoadReferenceNumberType>ACT_SP_DATE</LoadReferenceNumberType> 
 
\t \t <LoadReferenceNumber>20160404T14:12:00</LoadReferenceNumber> 
 
\t </LoadReferenceNumberList> 
 
\t <LoadReferenceNumberList> 
 
\t \t <LoadReferenceNumberType>SP_DATE</LoadReferenceNumberType> 
 
\t \t <LoadReferenceNumber>20170404T14:12:00</LoadReferenceNumber> 
 
\t </LoadReferenceNumberList> 
 
    </CIS>

回答

0

下面的例子是一個dataweave分量提取羅阿絲的LoadReferenceNumber dReferenceNumberList其中LoadReferenceNumberType == 'MB':

<dw:set-variable variableName="LoadReferenceNumber"><![CDATA[%dw 1.0 
%output application/java 
--- 
value: ((payload.CIS.*LoadReferenceNumberList filter $.LoadReferenceNumberType == 'MB')[0].LoadReferenceNumber) default null]]></dw:set-variable> 
     </dw:transform-message> 

結果是LinkedHashMap中,下面的例子是記錄它記錄了LoadReferenceNumber:

<logger message="#[flowVars.LoadReferenceNumber.value]" level="INFO" 
       doc:name="Logger" /> 

希望這有助於:)

+0

在flowVariable而不是LinkedHashMa中獲得普通值p,將其更改爲以下。請注意,我不再將轉換分配給「值」。 - (<![CDATA [%dw 1.0 %output application/java --- --- )[0] .LoadReferenceNumber)default null]]> '。轉換之後,'flowVars.LoadReferenceNumber'應該保存值。 –

+0

試過這個,但得到NULL作爲輸出。 – Jitendra

+0

你能分享你的mule配置文件嗎?和精確的有效載荷,如果它不同於上述的XML。 – vinzon

0

使用數據編織

%dw 1.0 
%output application/java 
--- 
value: ((payload.CIS.*LoadReferenceNumberList filter $.LoadReferenceNumberType == 'MB')[0].LoadReferenceNumber) default null