0

I am using Webservice and filter XML. This is how output looks (in XML):

scan details ()

  Scan 
  Status type - UD
  Time

  Scan
  Status type - DL
  Time

I want to differentiate between the two scans based on Status type.

(Edit: This is the complete API output) 1- I want to filter status from the XML. Because there are many status can not filter the current status, which comes first. 2- Based on Instructions i want to get the data from XML.

<ShipmentData>
<Shipment>
<Origin>Jaipur_Hub (Rajasthan)</Origin>
<Status>
<Status>Dispatched</Status>
<StatusLocation>Hyd_Gachibowli (Andhra Pradesh)</StatusLocation>
<StatusDateTime>2015-10-08T09:53:53.646000</StatusDateTime>
<RecievedBy/>
<Instructions>Out for delivery</Instructions>
<StatusType>UD</StatusType>
<StatusCode>X-DDD3FD</StatusCode>
</Status>
<PickUpDate>2015-10-05T20:34:06.284000</PickUpDate>
<OrderType>COD</OrderType>
<Destination>Hyderabad</Destination>
<Consignee>
<City>Hyderabad</City>
<Name>Vidhya N</Name>
<Country>India</Country>
<Address2/>
<Address3/>
<PinCode>500081</PinCode>
<State>Andhra Pradesh</State>
<Telephone2/>
<Telephone1>9640173515</Telephone1>
<Address1>
104e,golf view apartment',gachibowli,nanakramguda junction,Hyderabad,,Hyderabad 500004,Andhra Pradesh,India
</Address1>
</Consignee>
<ReferenceNo>R534822876</ReferenceNo>
<ReturnedDate>None</ReturnedDate>
<DestRecieveDate>2015-10-07T10:02:24.575000</DestRecieveDate>
<OriginRecieveDate>2015-10-05T22:51:11.110000</OriginRecieveDate>
<OutDestinationDate>2015-10-05T22:54:41.515000</OutDestinationDate>
<CODAmount>510</CODAmount>
<FirstAttemptDate>None</FirstAttemptDate>
<ReverseInTransit>False</ReverseInTransit>
<Scans>
<ScanDetail>
<ScanDateTime>2015-10-05T19:40:53.414000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>Manifested</Scan>
<StatusDateTime>2015-10-05T19:40:53.414000</StatusDateTime>
<ScannedLocation>HQ (Haryana)</ScannedLocation>
<Instructions>Consignment Manifested</Instructions>
<StatusCode>X-UCI</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-05T20:33:41.921000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-05T20:33:41.921000</StatusDateTime>
<ScannedLocation>Jaipur_Hub (Rajasthan)</ScannedLocation>
<Instructions>Shipment Picked Up from Client Location</Instructions>
<StatusCode>X-PPOM</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-05T22:51:11.110000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-05T22:51:11.110000</StatusDateTime>
<ScannedLocation>Jaipur_Hub (Rajasthan)</ScannedLocation>
<Instructions>Shipment Recieved at Origin Center</Instructions>
<StatusCode>X-PIOM</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-06T07:55:18.321000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-06T07:55:18.321000</StatusDateTime>
<ScannedLocation>Jaipur_Hub (Rajasthan)</ScannedLocation>
<Instructions>Added to IST</Instructions>
<StatusCode>X-DLL2F</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-06T12:57:47.461000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-06T12:57:47.461000</StatusDateTime>
<ScannedLocation>Hyd_Hub (Andhra Pradesh)</ScannedLocation>
<Instructions>Consignment received at destination city</Instructions>
<StatusCode>X-ILD2F</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-06T12:59:50.726000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-06T12:59:50.726000</StatusDateTime>
<ScannedLocation>Hyd_Hub (Andhra Pradesh)</ScannedLocation>
<Instructions>Consignment received at destination city</Instructions>
<StatusCode>X-ILD1F</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-06T15:54:44.172000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-06T15:54:44.172000</StatusDateTime>
<ScannedLocation>Hyd_Hub (Andhra Pradesh)</ScannedLocation>
<Instructions>Added to IST</Instructions>
<StatusCode>X-DLD1F</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-06T16:40:33.512000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-06T16:40:33.512000</StatusDateTime>
<ScannedLocation>Hyd_Nagol_PC (Andhra Pradesh)</ScannedLocation>
<Instructions>Consignment received at destination city</Instructions>
<StatusCode>X-ILD1F</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-06T16:42:24.562000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-06T16:42:24.562000</StatusDateTime>
<ScannedLocation>Hyd_Nagol_PC (Andhra Pradesh)</ScannedLocation>
<Instructions>Consignment received at destination city</Instructions>
<StatusCode>X-ILD1F</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-06T16:49:24.829000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-06T16:49:24.829000</StatusDateTime>
<ScannedLocation>Hyd_Nagol_PC (Andhra Pradesh)</ScannedLocation>
<Instructions>Bag incoming at destination city PC</Instructions>
<StatusCode>X-IBD1F</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-06T17:35:34.857000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-06T17:35:34.857000</StatusDateTime>
<ScannedLocation>Hyd_Nagol_PC (Andhra Pradesh)</ScannedLocation>
<Instructions>Bagged at destination city PC</Instructions>
<StatusCode>X-DBD1F</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-06T20:22:35.926000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-06T20:22:35.926000</StatusDateTime>
<ScannedLocation>Hyd_Nagol_PC (Andhra Pradesh)</ScannedLocation>
<Instructions>Added to IST</Instructions>
<StatusCode>X-DLD1F</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-06T21:56:35.191000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-06T21:56:35.191000</StatusDateTime>
<ScannedLocation>Hyd_Hub (Andhra Pradesh)</ScannedLocation>
<Instructions>Consignment received at destination city</Instructions>
<StatusCode>X-ILD1F</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-06T21:59:12.350000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-06T21:59:12.350000</StatusDateTime>
<ScannedLocation>Hyd_Hub (Andhra Pradesh)</ScannedLocation>
<Instructions>Consignment received at destination city</Instructions>
<StatusCode>X-ILD1F</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-07T04:31:39.672000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-07T04:31:39.672000</StatusDateTime>
<ScannedLocation>Hyd_Hub (Andhra Pradesh)</ScannedLocation>
<Instructions>Added to IST</Instructions>
<StatusCode>X-DLD1F</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-07T06:03:31.372000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-07T06:03:31.372000</StatusDateTime>
<ScannedLocation>Hyderabad_SaiNgr_IP (Andhra Pradesh)</ScannedLocation>
<Instructions>Consignment received at destination city</Instructions>
<StatusCode>X-ILD1F</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-07T06:51:58.806000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-07T06:51:58.806000</StatusDateTime>
<ScannedLocation>Hyderabad_SaiNgr_IP (Andhra Pradesh)</ScannedLocation>
<Instructions>Consignment received at destination city</Instructions>
<StatusCode>X-ILD1F</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-07T06:52:32.210000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-07T06:52:32.210000</StatusDateTime>
<ScannedLocation>Hyderabad_SaiNgr_IP (Andhra Pradesh)</ScannedLocation>
<Instructions>Bag incoming at destination city PC</Instructions>
<StatusCode>X-IBD1F</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-07T06:58:03.486000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-07T06:58:03.486000</StatusDateTime>
<ScannedLocation>Hyderabad_SaiNgr_IP (Andhra Pradesh)</ScannedLocation>
<Instructions>Bagged at destination city PC</Instructions>
<StatusCode>X-DBD1F</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-07T07:50:47.727000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-07T07:50:47.727000</StatusDateTime>
<ScannedLocation>Hyderabad_SaiNgr_IP (Andhra Pradesh)</ScannedLocation>
<Instructions>Added to IST</Instructions>
<StatusCode>X-DLD1F</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-07T08:56:54.922000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-07T08:56:54.922000</StatusDateTime>
<ScannedLocation>Hyd_Gachibowli (Andhra Pradesh)</ScannedLocation>
<Instructions>Consignment received at destination city</Instructions>
<StatusCode>X-ILD1F</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-07T09:03:58.231000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>In Transit</Scan>
<StatusDateTime>2015-10-07T09:03:58.231000</StatusDateTime>
<ScannedLocation>Hyd_Gachibowli (Andhra Pradesh)</ScannedLocation>
<Instructions>Bag incoming at destination city PC</Instructions>
<StatusCode>X-IBD1F</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-07T10:03:41.322000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>Dispatched</Scan>
<StatusDateTime>2015-10-07T10:03:41.322000</StatusDateTime>
<ScannedLocation>Hyd_Gachibowli (Andhra Pradesh)</ScannedLocation>
<Instructions>Out for delivery</Instructions>
<StatusCode>X-DDD3FD</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-07T16:47:00</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>Pending</Scan>
<StatusDateTime>2015-10-07T16:47:00</StatusDateTime>
<ScannedLocation>Hyd_Gachibowli (Andhra Pradesh)</ScannedLocation>
<Instructions>
Consignee not available, to be re-attempted 2015-10-07
</Instructions>
<StatusCode>EOD-11</StatusCode>
</ScanDetail>
<ScanDetail>
<ScanDateTime>2015-10-08T09:53:53.646000</ScanDateTime>
<ScanType>UD</ScanType>
<Scan>Dispatched</Scan>
<StatusDateTime>2015-10-08T09:53:53.646000</StatusDateTime>
<ScannedLocation>Hyd_Gachibowli (Andhra Pradesh)</ScannedLocation>
<Instructions>Out for delivery</Instructions>
<StatusCode>X-DDD3FD</StatusCode>
</ScanDetail>
</Scans>
<SenderName>Voylla</SenderName>
<AWB>272610632656</AWB>
<DispatchCount>2</DispatchCount>
<InvoiceAmount>510</InvoiceAmount>
</Shipment>
</ShipmentData>

1 Answers1

0

Given your XML above - it cannot be done, because your two elements are identical.

If we assume different 'ScanType' elements an xpath of:

//ScanDetail/ScanType[string()=~/UD/]/..

Works with my xpath engine (using XML::Twig and perl).

This should do it, but I've not tested it:

//ScanDetail[ScanType = 'UD'] 

(With reference to: XPath to select element based on childs child value)

Community
  • 1
  • 1
Sobrique
  • 52,974
  • 7
  • 60
  • 101