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 + ">
");
}
}
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(">
");
}
buf.append("</xml>");
return buf.toString();
}
}