From c47b8eceba4824581c6ad8a76a585e5fb226d9b2 Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Wed, 4 Jan 2017 19:23:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DtoMap=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E7=9A=84bug=EF=BC=8C=E5=B9=B6=E5=8A=A0=E5=85=A5=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mp/bean/pay/result/WxPayBaseResult.java | 18 +++++-- .../bean/pay/result/WxPayBaseResultTest.java | 49 +++++++++++++++++++ 2 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/pay/result/WxPayBaseResultTest.java diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayBaseResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayBaseResult.java index b06f3cca..bbb0fe27 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayBaseResult.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayBaseResult.java @@ -4,9 +4,10 @@ import com.google.common.collect.Maps; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.annotations.XStreamAlias; import io.restassured.internal.path.xml.NodeChildrenImpl; +import io.restassured.internal.path.xml.NodeImpl; import io.restassured.path.xml.XmlPath; import io.restassured.path.xml.element.Node; -import io.restassured.path.xml.element.NodeChildren; +import io.restassured.path.xml.exception.XmlPathException; import me.chanjar.weixin.common.util.ToStringUtils; import me.chanjar.weixin.common.util.xml.XStreamInitializer; import org.slf4j.Logger; @@ -186,12 +187,23 @@ public abstract class WxPayBaseResult { public Map toMap() { Map result = Maps.newHashMap(); XmlPath xmlPath = new XmlPath(this.xmlString); - NodeChildren nodeChildren = xmlPath.getNodeChildren("xml"); - Iterator iterator = nodeChildren.nodeIterator(); + NodeImpl rootNode = null; + try { + rootNode = xmlPath.get("xml"); + } catch (XmlPathException e) { + throw new RuntimeException("xml数据有问题,请核实!"); + } + + if (rootNode == null) { + throw new RuntimeException("xml数据有问题,请核实!"); + } + + Iterator iterator = rootNode.children().nodeIterator(); while (iterator.hasNext()) { Node node = iterator.next(); result.put(node.name(), node.value()); } + return result; } diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/pay/result/WxPayBaseResultTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/pay/result/WxPayBaseResultTest.java new file mode 100644 index 00000000..0b1e7ac9 --- /dev/null +++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/pay/result/WxPayBaseResultTest.java @@ -0,0 +1,49 @@ +package me.chanjar.weixin.mp.bean.pay.result; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import java.util.Map; + +/** + *
+ * Created by Binary Wang on 2017-01-04.
+ * @author binarywang(Binary Wang)
+ * 
+ */ +public class WxPayBaseResultTest { + @Test + public void testToMap() throws Exception { + WxPayOrderQueryResult result = new WxPayOrderQueryResult(); + result.setXmlString("\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " 1\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + ""); + Map map = result.toMap(); + System.out.println(map); + + Assert.assertEquals("SUCCESS", map.get("return_code")); + Assert.assertEquals("订单额外描述", map.get("attach")); + + result.setXmlString(""); + System.out.println(result.toMap()); + } + +}