XMLSerializer的一个bug

  相同的代码,读取未格式化xml和已格式化xml,未格式化的解析起来报错,代码很简单

1.java解析代码

    // getResponseContent(fileName) 从指定文件名中读取文件内容作为字符串
    String responseXML = getResponseContent("content");

    // xml字符串 转换为 json字符串
    String responseJsonStr = new net.sf.json.xml.XMLSerializer().read(responseXML).toString();

    // json字符串 转换 json对象
    JSONObject responseJson = net.sf.json.JSONObject.fromObject(responseJsonStr);

    // 获取指定节点
    JSONArray details = responseJson.getJSONArray("details");

2.解析未格式化xml

未格式化的xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><searchdetail totalRecords="1" pageSize="1" requestId="201910311452000033"><details><transaction><player playerId="abc" partnerId="bcd"/><detail transactionId="43308923710" transactionDate="20191031 03:53:00" currency="CNY" game="FuStarH5" transactionSubType="Wager" handId="13809462143" amount="-2.50"/></transaction></details></searchdetail>

结果异常:

Exception in thread "main" net.sf.json.JSONException: JSONObject["details"] is not a JSONArray.
    at net.sf.json.JSONObject.getJSONArray(JSONObject.java:2038)
    at io..M.main(M.java:53)

3.解析已格式化xml

已格式化的xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<searchdetail totalRecords="1" pageSize="1" requestId="201910311451000013">
    <details>
        <transaction>
            <player playerId="abc" partnerId="bcd"/>
            <detail transactionId="43308923710" transactionDate="20191031 03:53:00" currency="CNY" game="FuStarH5" transactionSubType="Wager" handId="13809462143" amount="-2.50"/>
        </transaction>
    </details>
</searchdetail>

结果正常

发布了158 篇原创文章 · 获赞 193 · 访问量 148万+

猜你喜欢

转载自blog.csdn.net/zy_281870667/article/details/103161242