0
votes

i have a requirement where in i need to extract the LoadReferenceNumber and assign to a variable which is initiated inside the data weave when the LoadReferenceNumberType is MB in mule, below is the xml

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

2 Answers

0
votes

The example below is a dataweave component which extract the LoadReferenceNumber from LoadReferenceNumberList where 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>

The result is a LinkedHashMap, the example below is logger which logs the LoadReferenceNumber:

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

Hope this helps :)

0
votes

you use that data weave

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