**解析各类xml为map工具类**

来源:互联网 发布:阿里移动推荐算法代码 编辑:程序博客网 时间:2024/06/06 05:01

解析xml工具类

import java.io.BufferedReader;import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.SortedMap;import java.util.TreeMap;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.jdom.Document;import org.jdom.Element;import org.jdom.JDOMException;import org.jdom.input.SAXBuilder;/** * 解析微信支付宝返回的xml * @author szb * 2017.08.02 */public class XMLUtil4jdom {    /**      * 解析xml,返回第一级元素键值对。如果第一级元素有子节点,则此节点的值是子节点的xml数据。      * @param strxml      * @return      * @throws JDOMException      * @throws IOException      */      public static Map<String, String> doXMLParse(String strxml) throws JDOMException, IOException {          strxml = strxml.replaceFirst("encoding=\".*\"", "encoding=\"UTF-8\"");          if(null == strxml || "".equals(strxml)) {            return null;          }        Map<String, String> m = new HashMap<String, String>();         InputStream in = new ByteArrayInputStream(strxml.getBytes("UTF-8"));          SAXBuilder builder = new SAXBuilder();          Document doc = builder.build(in);          Element root = doc.getRootElement();          List list = root.getChildren();          Iterator it = list.iterator();          while(it.hasNext()) {              Element e = (Element) it.next();              String k = e.getName();              String v = "";              List children = e.getChildren();              if(children.isEmpty()) {                  v = e.getTextNormalize();              } else {                  v = XMLUtil4jdom.getChildrenText(children);              }              m.put(k, v);          }          //关闭流          in.close();          return m;      }      /**      * 获取子结点的xml      * @param children      * @return String      */      public static String getChildrenText(List children) {          StringBuffer sb = new StringBuffer();          if(!children.isEmpty()) {              Iterator it = children.iterator();              while(it.hasNext()) {                  Element e = (Element) it.next();                  String name = e.getName();                  String value = e.getTextNormalize();                  List list = e.getChildren();                  sb.append("<" + name + ">");                  if(!list.isEmpty()) {                      sb.append(XMLUtil4jdom.getChildrenText(list));                  }                  sb.append(value);                  sb.append("</" + name + ">");              }          }          return sb.toString();      }      public static SortedMap<Object,Object> getMap(HttpServletRequest request,HttpServletResponse response)throws Exception{        //读取参数             InputStream inputStream ;             StringBuffer sb = new StringBuffer();             inputStream = request.getInputStream();             String s ;             BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));             while ((s = in.readLine()) != null){                 sb.append(s);           }           in.close();           inputStream.close();           //解析xml成map             Map<String, String> m = new HashMap<String, String>();             m = XMLUtil4jdom.doXMLParse(sb.toString());             //过滤空 设置 TreeMap             SortedMap<Object,Object> packageParams = new TreeMap<Object,Object>();                   Iterator it = m.keySet().iterator();             while (it.hasNext()) {                 String parameter = (String) it.next();               String parameterValue = m.get(parameter);               String v = "";                 if(null != parameterValue) {                   v = parameterValue.trim();                 }                 packageParams.put(parameter, v);             }          return packageParams;    }}
原创粉丝点击