<shipment-status-message>
<interchange>
<authorization-qualifier>00</authorization-qualifier>
<authorization-information></authorization-information>
<security-qualifier>00</security-qualifier>
<security-information></security-information>
<sender-qualifier>02</sender-qualifier>
<sender-id>ODFL </sender-id>
<receiver-qualifier>ZZ</receiver-qualifier>
<receiver-id>1234567 </receiver-id>
<date>170202</date>
<time>1244</time>
<repetition-separator>U</repetition-separator>
<version>00401</version>
<control-number>000001062</control-number>
<acknowledgment-requested>0</acknowledgment-requested>
<usage-indicator>P</usage-indicator>
<composite-separator>></composite-separator>
</interchange>
<group>
<group-code>QM</group-code>
<sender-id>ODFL</sender-id>
<receiver-id>1234567</receiver-id>
<date>20170202</date>
<time>124452</time>
<control-number>906</control-number>
<agency-code>X</agency-code>
<version>004010</version>
</group>
<transaction-sets>
<shipment-status>
<identifier-code>214</identifier-code>
<sequence>0001</sequence>
<reference-identification>02625962200</reference-identification>
<shipment-identification-number>NAMCLF0005633</shipment-identification-number>
<scac>TEST</scac>
<reference-numbers>
<reference-number>
<reference-identification>4550465693</reference-identification>
<reference-qualifier>PO</reference-qualifier>
</reference-number>
</reference-numbers>
<location-information/>
<assigned-number>1</assigned-number>
<indicator-code>D1</indicator-code>
<reason-code-1>NS</reason-code-1>
<status-code></status-code>
<reason-code-2></reason-code-2>
<date>20170202</date>
<time>1217</time>
<time-code>ET</time-code>
<weight-qualifier>G</weight-qualifier>
<weight-unit-code>L</weight-unit-code>
<weight>8142</weight>
<lading-quantity>15</lading-quantity>
<number-of-segments>7</number-of-segments>
<control-number>0001</control-number>
</shipment-status>
<shipment-status>
<identifier-code>214</identifier-code>
<sequence>0002</sequence>
<reference-identification>02625962201</reference-identification>
<shipment-identification-number>NAMCLF0005633</shipment-identification-number>
<scac>FOOB</scac>
<reference-numbers>
<reference-number>
<reference-identification>4550465694</reference-identification>
<reference-qualifier>PO</reference-qualifier>
</reference-number>
</reference-numbers>
<location-information/>
<assigned-number>1</assigned-number>
<indicator-code>D1</indicator-code>
<reason-code-1>NS</reason-code-1>
<status-code></status-code>
<reason-code-2></reason-code-2>
<date>20170202</date>
<time>1217</time>
<time-code>ET</time-code>
<weight-qualifier>G</weight-qualifier>
<weight-unit-code>L</weight-unit-code>
<weight>8142</weight>
<lading-quantity>15</lading-quantity>
<number-of-segments>7</number-of-segments>
<control-number>0001</control-number>
</shipment-status>
</transaction-sets>
<ge>
<transaction-count>2</transaction-count>
<control-number>9185</control-number>
</ge>
<iea>
<group-count>1</group-count>
<control-number>000015198</control-number>
</iea>
</shipment-status-message>
That can be sent to a Java to Java Smooks filter along with configuration like the one below that creates a map of objects.
<?xml version="1.0" encoding="UTF-8" ?>
<smooks-resource-list
xmlns:json="
https://www.smooks.org/xsd/smooks/json-1.3.xsd"
xmlns:jb="
https://www.smooks.org/xsd/smooks/javabean-1.6.xsd"
xmlns="
https://www.smooks.org/xsd/smooks-2.0.xsd">
<jb:bean beanId="interchange" class="java.util.HashMap" createOnElement="interchange">
<jb:value data="#/receiverId" property="myReceiver" />
<jb:value data="#/senderId" property="mySender" />
<jb:value data="time" property="time" />
<jb:value data="receiverQualifier" property="qualifier" />
</jb:bean>
<jb:bean beanId="group" class="java.util.HashMap" createOnElement="group" retain="true">
<jb:value data="groupCode" property="groupCode" />
<jb:value data="#/time" property="time" />
</jb:bean>
<jb:bean beanId="shipmentStatuses" class="java.util.ArrayList" createOnElement="shipmentStatuses" retain="true">
<jb:wiring beanIdRef="shipmentStatus" />
</jb:bean>
<jb:bean beanId="shipmentStatus" class="java.util.HashMap" createOnElement="shipmentStatuse">
<jb:value data="sequence" property="sequence" />
<jb:value data="shipmentIdentificationNumber" property="shipmentId"/>
</jb:bean>
</smooks-resource-list>
You can specify which beans to retain in the context and retrieve them. The JSON representation of the shipmentStatuses bean after the above transforms is:
[{"sequence":"0001","shipmentId":"NAMCLF0005633"},{"sequence":"0001","shipmentId":"NAMCLF0005633"}]