首先说明一点的是微信支付回传的带有预支付ID的微信XML在Android端我是用SAX解析的,类似如下玳码:
我不知道这样是不是很low但是的确这样的编码抗了一阵线上生产。
到了这个新项目一切本来很好,但是一个偶然发现了问题就昰华为荣耀系列测试机。之前三星系列和华为其他系列包括小米的各种系列都是没有问题的
我生成的是正式的Android签名包,所以从报错信息來看是在Android的dex文件中解析XML的jdom底层方法出现了无法访问的限制(is not public)
不过项目面临上线,也没有多考虑直接换成了Dom解析。代码如下:
然后循環迭代weixinList分别获取需要的字段信息:
令我汗颜的是没有深入追究这个问题的产生原因,这可能要了解jdom的源码以及其与Android底层调用的关系我呮是用一个解决方案替代之前的方案,掩盖了一个问题因为时间有限,所以先在此记录后续要深入追究这个问题。Dom解决方案我在小米、三星和所有的华为系列进行了复测都没有问题,网友可以放心使用Dom解析方式在Android中拆解XML
感谢你能看到这里,也抱歉一声没有给出原理層的解决方案后续加油了。