From 6c38f5d14955f0cec857adaba4b5ef1e4ef07442 Mon Sep 17 00:00:00 2001 From: egzosn Date: Mon, 1 Apr 2019 17:59:06 +0800 Subject: [PATCH] =?UTF-8?q?XML=E5=A4=9A=E5=B1=82=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=EF=BC=8Cmap=E8=BD=ACxml=E5=AD=97=E7=AC=A6=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pay-java-ali/README.md | 2 +- .../pay/common/http/ClientHttpRequest.java | 2 +- .../java/com/egzosn/pay/common/util/XML.java | 48 ++++++++++++++++--- pay-java-demo/README.md | 2 +- pom.xml | 1 + 5 files changed, 46 insertions(+), 9 deletions(-) diff --git a/pay-java-ali/README.md b/pay-java-ali/README.md index 48bb371..a1ea919 100644 --- a/pay-java-ali/README.md +++ b/pay-java-ali/README.md @@ -10,7 +10,7 @@ AliPayConfigStorage aliPayConfigStorage = new AliPayConfigStorage(); aliPayConfigStorage.setPid("合作者id"); aliPayConfigStorage.setAppId("应用id"); - aliPayConfigStorage.setAliPublicKey("支付宝公钥"); + aliPayConfigStorage.setKeyPublic("支付宝公钥"); aliPayConfigStorage.setKeyPrivate("应用私钥"); aliPayConfigStorage.setNotifyUrl("异步回调地址"); aliPayConfigStorage.setReturnUrl("同步回调地址"); diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/http/ClientHttpRequest.java b/pay-java-common/src/main/java/com/egzosn/pay/common/http/ClientHttpRequest.java index db0dccf..a8f34b9 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/http/ClientHttpRequest.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/http/ClientHttpRequest.java @@ -37,7 +37,7 @@ import static com.egzosn.pay.common.http.UriVariables.getMapToParameters; */ public class ClientHttpRequest extends HttpEntityEnclosingRequestBase implements org.apache.http.client.ResponseHandler{ protected static final Log LOG = LogFactory.getLog(ClientHttpRequest.class); - public static final ContentType APPLICATION_FORM_URLENCODED_UTF_8 = ContentType.create("application/x-www-form-urlencoded", Consts.UTF_8);; + public static final ContentType APPLICATION_FORM_URLENCODED_UTF_8 = ContentType.create("application/x-www-form-urlencoded", Consts.UTF_8); /** diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/util/XML.java b/pay-java-common/src/main/java/com/egzosn/pay/common/util/XML.java index 294a457..9e89e74 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/util/XML.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/util/XML.java @@ -8,6 +8,7 @@ import com.egzosn.pay.common.bean.result.PayException; import com.egzosn.pay.common.exception.PayErrorException; import com.egzosn.pay.common.util.str.StringUtils; import org.w3c.dom.Document; +import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -254,36 +255,49 @@ public class XML { * @return XML格式的字符串 */ public static String getMap2Xml(Map data) { + return getMap2Xml(data, "xml", "UTF-8"); + } + /** + * 将Map转换为XML格式的字符串 + * + * @param data Map类型数据 + * @param rootElementName 最外层节点名称 + * @return XML格式的字符串 + */ + public static String getMap2Xml(Map data, String rootElementName, String encoding) { Document document = null; try { document = newDocument(); } catch (ParserConfigurationException e) { throw new PayErrorException(new PayException("ParserConfigurationException", e.getLocalizedMessage())); } - org.w3c.dom.Element root = document.createElement("xml"); + org.w3c.dom.Element root = document.createElement(rootElementName); document.appendChild(root); - for (Map.Entry entry : data.entrySet()) { + /* for (Map.Entry entry : data.entrySet()) { Object value = entry.getValue(); if (value == null) { value = ""; } + value = value.toString().trim(); org.w3c.dom.Element filed = document.createElement(entry.getKey()); filed.appendChild(document.createTextNode(value.toString())); root.appendChild(filed); - } + }*/ + + map2Xml(data, document, root); try { TransformerFactory tf = TransformerFactory.newInstance(); Transformer transformer = tf.newTransformer(); DOMSource source = new DOMSource(document); - transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); + transformer.setOutputProperty(OutputKeys.ENCODING, encoding); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); StringWriter writer = new StringWriter(); StreamResult result = new StreamResult(writer); transformer.transform(source, result); - String output = writer.getBuffer().toString(); //.replaceAll("\n|\r", ""); + String output = writer.getBuffer().toString(); return output; } catch (TransformerException e) { e.printStackTrace(); @@ -293,5 +307,27 @@ public class XML { return ""; } - + /** + * 将Map转换为XML格式的字符串 + * + * @param data Map类型数据 + * @param document 文档 + * @return XML格式的字符串 + */ + public static void map2Xml(Map data, Document document, org.w3c.dom.Element element) { + for (Map.Entry entry : data.entrySet()) { + Object value = entry.getValue(); + if (value == null) { + value = ""; + } + org.w3c.dom.Element filed = document.createElement(entry.getKey()); + if (value instanceof Map){ + map2Xml((Map)value, document, filed); + }else { + value = value.toString().trim(); + filed.appendChild(document.createTextNode(value.toString())); + } + element.appendChild(filed); + } + } } diff --git a/pay-java-demo/README.md b/pay-java-demo/README.md index fe23432..27793b7 100644 --- a/pay-java-demo/README.md +++ b/pay-java-demo/README.md @@ -23,7 +23,7 @@ public enum PayType implements BasePayType { AliPayConfigStorage aliPayConfigStorage = new AliPayConfigStorage(); aliPayConfigStorage.setPid(apyAccount.getPartner()); aliPayConfigStorage.setAppId(apyAccount.getAppid()); - aliPayConfigStorage.setAliPublicKey(apyAccount.getPublicKey()); + aliPayConfigStorage.setKeyPublic(apyAccount.getPublicKey()); aliPayConfigStorage.setKeyPrivate(apyAccount.getPrivateKey()); aliPayConfigStorage.setNotifyUrl(apyAccount.getNotifyUrl()); aliPayConfigStorage.setReturnUrl(apyAccount.getReturnUrl()); diff --git a/pom.xml b/pom.xml index 643fa99..c4b08aa 100644 --- a/pom.xml +++ b/pom.xml @@ -51,6 +51,7 @@ pay-java-union pay-java-payoneer pay-java-paypal + pay-java-pds pay-java-demo