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()); + } + +}