0

Using web service call ,I got the following response from server. Now i need to parse this response, Extract all field values and store it in String values

<?xml version="1.0" encoding="utf-8"?>
<ecomexpress-objects version="1.0"><object pk="1" model="awb">
    <field type="BigIntegerField" name="awb_number">102019265</field>
    <field type="CharField" name="orderid">8008444</field>
    <field type="FloatField" name="actual_weight">2</field>
    <field type="CharField" name="origin">DELHI-DSW</field>
    <field type="CharField" name="destination">Mumbai - BOW</field>
    <field type="CharField" name="current_location_name">Mumbai - BOW</field>
    <field type="CharField" name="current_location_code">BOW</field>
    <field type="CharField" name="customer">Ecom Express Private Limited - 32012</field>
    <field type="CharField" name="consignee">BEECHAND VERMA</field>
    <field type="CharField" name="pickupdate">22-Jan-2014</field>
    <field type="CharField" name="status">Undelivered</field>
    <field type="CharField" name="tracking_status">Undelivered</field>
    <field type="CharField" name="reason_code">221 - Consignee Refused To Accept</field>
    <field type="CharField" name="reason_code_description">Consignee Refused To Accept</field>
    <field type="CharField" name="reason_code_number">221 </field>
    <field type="CharField" name="receiver"></field>
    <field type="CharField" name="expected_date" >15-Feb-2014</field>
    <field type="CharField" name="last_update_date" ></field>
    <field type="CharField" name="delivery_date" ></field>
    <field type="CharField" name="ref_awb" >703063993</field>
    <field type="CharField" name="rts_shipment" >0</field>
    <field type="CharField" name="system_delivery_update" ></field>
    <field type="CharField" name="rts_system_delivery_status" Undelivered</field>
    <field type="CharField" name="rts_reason_code_number">777</field>
    <field type="CharField" name="rts_last_update">22 Jan, 2014, 12:44 </field>
    <field type="CharField" name="pincode" >400037</field>
    <field type="CharField" name="city" >MUMBAI</field>
    <field type="CharField" name="state" >Maharashtra</field>
    <field name="scans">
</ecomexpress-objects>

If i try the following code to parse

    String xml=result.toString();
    try{
       DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        InputSource is;
        is = new InputSource(new StringReader(xml));
        Document doc = db.parse(is);
        NodeList nodelist = doc.getChildNodes();
       }
      catch (SAXException e) {
        e.printStackTrace();
    } catch (ParserConfigurationException e) {
        e.printStackTrace();
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

I get the following error.

    org.xml.sax.SAXParseException: expected: /field read: ecomexpress-objects (position:END_TAG </ecomexpress-objects>@1:1917 in java.io.StringReader@39978dff) 

I need to store all field values in respective string variables

2 Answers 2

1

There are several errors in your xml :

  • No closing tag object .

  • Undelivered appears in attribute at : <field type="CharField"
    name="rts_system_delivery_status" Undelivered</field>

  • should be closed like <field name="scans"/>

As long as xml is invalid, you keep getting exceptions.

Sign up to request clarification or add additional context in comments.

Comments

0

Your XML is not valid.

The tag <field name="scans"> is not closed.

2 Comments

This is the response from third party API. I have no control over it
@Sumi you can not use an XML Parser to parse an corrupted XML. Talk to the Provider that the issue will be fixed

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.