java - XML 解析中的 SAXParseException 错误

标签 java xml xml-parsing

使用网络服务调用,我从服务器收到以下响应。现在我需要解析这个响应,提取所有字段值并将其存储在字符串值中

<?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>

如果我尝试以下代码来解析

    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();
    }

我收到以下错误。

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

我需要将所有字段值存储在各自的字符串变量中

最佳答案

您的 xml 中有几个错误:

  • 没有结束标签 object .

  • Undelivered出现在属性中:<field type="CharField"<br/> name="rts_system_delivery_status" Undelivered</field>

  • 应该像 <field name="scans"/> 一样关闭

只要 xml 无效,您就会不断收到异常。

关于java - XML 解析中的 SAXParseException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44435914/

相关文章:

python - 替换 XML 文件中的 python 字符串

xml - 我如何在 perl 中解析 xml 网页

xml - 使用go提取xml属性

bash - 如何使用 xmllint 解析 xml 并将其存储在数组中

java - 如何使用 iText 7 在 PDF 文件中添加复选框?

Java:赛车 Arrays.sort

java - 服务器中的线程卡住

java - if条件中的return语句函数

java - XML 递归节点解析器

iphone - UTF-8 字符问题(iOS、NSString)