XML解析异常

最近看了一下微信支付的接口,不得不说这接口还用的是XML,在当下JSON火热的情况下使用XML还是要一定勇气的,而且最坑爹的是XML不能使用<![CDATA[]],自己还要转义。但他返回的XML居然可以使用。

好吧进入主题,说一下这个问题,下面是TX返回的内容:

<xml><return_code><![CDATA[FAIL]]></return_code>
<return_msg><![CDATA[appid不存在]]></return_msg>
</xml>

问题很简单,就是xml没有设置编码,所以:

org.dom4j.DocumentException: 1 字节的 UTF-8 序列的字节 1 无效。 Nested exception: 1 字节的 UTF-8 序列的字节 1 无效。
	at org.dom4j.io.SAXReader.read(SAXReader.java:484)

解决办法也简单:

SAXReader saxReader = new SAXReader();
saxReader.read(new InputSource(new ByteArrayInputStream(content.getBytes("UTF-8")))); //设置一下编码就可以了

Done