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>

结果正常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值