/** * Project Name:pay-protocol * File Name:Xml.java * Package Name:cn.swiftpass.pay.protocol * Date:2014-8-10下午10:48:21 * */ package com.mandi.common; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.xml.sax.InputSource; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; import java.io.*; import java.util.*; /** * ClassName:Xml * Function: XML的工具方法 * Date: 2014-8-10 下午10:48:21 * @author */ @SuppressWarnings({"rawtypes","unchecked"}) public class XmlUtils { /** <一句话功能简述> * <功能详细描述>request转字符串 * @param request * @return * @see [类、类#方法、类#成员] */ public static String parseRequst(HttpServletRequest request){ String body = ""; try { ServletInputStream inputStream = request.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(inputStream,"utf-8")); while(true){ String info = br.readLine(); if(info == null){ break; } if(body == null || "".equals(body)){ body = info; }else{ body += info; } } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return body; } public static String parseXML(SortedMap parameters) { StringBuffer sb = new StringBuffer(); sb.append(""); Set es = parameters.entrySet(); Iterator it = es.iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry)it.next(); String k = (String)entry.getKey(); String v = (String)entry.getValue(); if (null != v && !"".equals(v) && !"appkey".equals(k)) { sb.append("<" + k + ">" + parameters.get(k) + "\n"); } } sb.append(""); return sb.toString(); } /** * 从request中获得参数Map,并返回可读的Map * * @param request * @return */ public static SortedMap getParameterMap(HttpServletRequest request) { // 参数Map Map properties = request.getParameterMap(); // 返回值Map SortedMap returnMap = new TreeMap(); Iterator entries = properties.entrySet().iterator(); Map.Entry entry; String name = ""; String value = ""; while (entries.hasNext()) { entry = (Map.Entry) entries.next(); name = (String) entry.getKey(); Object valueObj = entry.getValue(); if(null == valueObj){ value = ""; }else if(valueObj instanceof String[]){ String[] values = (String[])valueObj; for(int i=0;i toMap(byte[] xmlBytes,String charset) throws Exception{ SAXReader reader = new SAXReader(false); InputSource source = new InputSource(new ByteArrayInputStream(xmlBytes)); source.setEncoding(charset); Document doc = reader.read(source); Map params = XmlUtils.toMap(doc.getRootElement()); return params; } /** * 转MAP * @author * @param element * @return */ public static Map toMap(Element element){ Map rest = new HashMap(); List els = element.elements(); for(Element el : els){ rest.put(el.getName().toLowerCase(), el.getText()); } return rest; } public static String toXml(Map params){ StringBuilder buf = new StringBuilder(); List keys = new ArrayList(params.keySet()); Collections.sort(keys); buf.append(""); for(String key : keys){ buf.append("<").append(key).append(">"); buf.append(""); buf.append("\n"); } buf.append(""); return buf.toString(); } }