微信支付中xml和map互转

微信支付中xml和map互转

现在用java做微信公众号的支付,支付过程将参数发给微信是以xml格式发送,接受过来的也是xml格式字符串。感觉网上的xml和map转化复杂就手写了一个,具体代码如下:

package com.ciji.zzaclient.util.weixin;import java.util.HashMap;import java.util.List;import java.util.Map;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHelper;import org.dom4j.Element;/** * XML与JavaBean相互转换工具类 */public final class XMLBeanUtils {    public static void main(String[] args) {        Map<String, String> map = new HashMap<String, String>();        /* * map.put("appid", WeixinUtils.APP_ID); map.put("mch_id", * WeixinUtils.MCH_ID); */        map.put("device_info ", "WEB");        //String nonce_str = RandomStringGenerator.getRandomStringByLength(32);        map.put("nonce_str", "5K8264ILTKCH16CQ2502SI8ZNMTM67VS");        map.put("body", "商品描述。XX项目");        map.put("out_trade_no", "001t" + System.currentTimeMillis());        map.put("total_fee", "0.01");        map.put("trade_type", "JSAPI");        map.put("openid", "o4lmljscgZDnjI4xthqMMnEr02fo");        String xmlResult = "";        StringBuffer sb = new StringBuffer();        sb.append("<xml>");        for (String key : map.keySet()) {            System.out.println(key + "========" + map.get(key));            sb.append("<" + key + ">" + map.get(key) + "</" + key + ">");            System.out.println();        }        sb.append("</xml>");        xmlResult = sb.toString();        System.out.println(xmlResult);    }    public static String map2XmlString(Map<String, String> map) {        String xmlResult = "";        StringBuffer sb = new StringBuffer();        sb.append("<xml>");        for (String key : map.keySet()) {            System.out.println(key + "========" + map.get(key));            String value = "<![CDATA[" + map.get(key) + "]]>";            sb.append("<" + key + ">" + value + "</" + key + ">");            System.out.println();        }        sb.append("</xml>");        xmlResult = sb.toString();        return xmlResult;    }    /** * @description 将xml字符串转换成map * @param xml * @return Map */    public static Map<String, String> readStringXmlOut(String xml) {        Map<String, String> map = new HashMap<String, String>();        Document doc = null;        try {            doc = DocumentHelper.parseText(xml); // 将字符串转为XML            Element rootElt = doc.getRootElement(); // 获取根节点            @SuppressWarnings("unchecked")            List<Element> list = rootElt.elements();// 获取根节点下所有节点            for (Element element : list) { // 遍历节点                map.put(element.getName(), element.getText()); // 节点的name为map的key,text为map的value            }        } catch (DocumentException e) {            e.printStackTrace();        } catch (Exception e) {            e.printStackTrace();        }        return map;    }}

效果是将map值转为如下的xml:

<xml>  <nonce_str>ojc0du21prhs97xsazmjxynhp11oun41</nonce_str>  <out_trade_no>001t144740390279</out_trade_no>  <device_info>WEB</device_info>  <openid>o4lmljscgZDnjI4xthqMMnEr02fo</openid>  <total_fee>0.01</total_fee>  <trade_type>JSAPI</trade_type>  <body>商品描述。xxx项目</body></xml>

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部