此篇主要是为了那些做微信支付需要解析XML的朋友少写代码而创建,直接用即可:一般我们在请求网络的时候,返回的都是Json格式的字符串,对此我们已经司空见惯,并且基本都知道如何去解析;但是有些情况下,服务器会返回一些XML格式的数据,这让那些向我一样很少解析XML的童鞋感到分外的难受,在网上看了一些代码,和xml解析的用法后,我自己试着解析了微信支付返回的XML 数据:微信支付返回的数据字段主要有这几个:
,所以我们解析的时候先创建一个model类,里面包含这几个需要的字段;然后调用下面这个方法就可以解析成功了:
private WxOrderInfo parseXml(String xmlString) {WxOrderInfo orderInfo = null;XmlPullParser xmlPullParser = Xml.newPullParser(); //由android.util.Xml创建一个XmlPullParser实例InputStream is = new ByteArrayInputStream(xmlString.getBytes());try {xmlPullParser.setInput(is, "UTF-8");//设置输入流 并指明编码方式int eventType =xmlPullParser.getEventType();//eventType 默认值为0,每次调用parser.next()会自动向后读取while(eventType != XmlPullParser.END_DOCUMENT){switch (eventType){case XmlPullParser.START_TAG:if(xmlPullParser.getName().equals("xml")){orderInfo = new WxOrderInfo();}else if(xmlPullParser.getName().equals("appid")){eventType = xmlPullParser.next();orderInfo.appid = xmlPullParser.getText();}else if(xmlPullParser.getName().equals("noncestr")){eventType = xmlPullParser.next();orderInfo.noncestr = xmlPullParser.getText();}else if(xmlPullParser.getName().equals("package")){eventType = xmlPullParser.next();orderInfo.wxpackage = xmlPullParser.getText();}else if(xmlPullParser.getName().equals("partnerid")){eventType = xmlPullParser.next();orderInfo.partnerid = xmlPullParser.getText();}else if(xmlPullParser.getName().equals("prepayid")) {eventType = xmlPullParser.next();orderInfo.prepayid = xmlPullParser.getText();}else if(xmlPullParser.getName().equals("timestamp")) {eventType = xmlPullParser.next();orderInfo.timestamp = String.valueOf(Long.parseLong(xmlPullParser.getText())*1000);}else if(xmlPullParser.getName().equals("sign")) {eventType = xmlPullParser.next();orderInfo.sign = xmlPullParser.getText();}break;case XmlPullParser.END_TAG:if (xmlPullParser.getName().equals("xml")) {Log.i("tag","XML 解析完毕");eventType = xmlPullParser.next();}break;}eventType = xmlPullParser.next();}} catch (Exception e) {e.printStackTrace();}return orderInfo;}
直接复制粘贴就可以了,返回的是你创建的Model对象;
此文章没有什么作用,就是为了让那些做微信支付的朋友能不用写了,直接拿来用,毕竟解析XML说难不难,但就是代码量太多了
好了谢谢