/** * 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<String, String> parameters) { StringBuffer sb = new StringBuffer(); sb.append("<xml>"); 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) + "</" + k + ">\n"); } } sb.append("</xml>"); 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<values.length;i++){ value = values[i] + ","; } value = value.substring(0, value.length()-1); }else{ value = valueObj.toString(); } returnMap.put(name, value.trim()); } returnMap.remove("method"); return returnMap; } /** * 转XMLmap * @author * @param xmlBytes * @param charset * @return * @throws Exception */ public static Map<String, String> 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<String, String> params = XmlUtils.toMap(doc.getRootElement()); return params; } /** * 转MAP * @author * @param element * @return */ public static Map<String, String> toMap(Element element){ Map<String, String> rest = new HashMap<String, String>(); List<Element> els = element.elements(); for(Element el : els){ rest.put(el.getName().toLowerCase(), el.getText()); } return rest; } public static String toXml(Map<String, String> params){ StringBuilder buf = new StringBuilder(); List<String> keys = new ArrayList<String>(params.keySet()); Collections.sort(keys); buf.append("<xml>"); for(String key : keys){ buf.append("<").append(key).append(">"); buf.append("<![CDATA[").append(params.get(key)).append("]]>"); buf.append("</").append(key).append(">\n"); } buf.append("</xml>"); return buf.toString(); } }