1. 程式人生 > 實用技巧 >Xml 和 Map的相互轉換工具類

Xml 和 Map的相互轉換工具類

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