微信xml解析

来源:互联网 发布:淘宝助理怎么导出图片 编辑:程序博客网 时间:2024/06/07 22:49
public static Map<String, String> parseXml(HttpServletRequest request) throws Exception {        // 将解析结果存储在HashMap中        Map<String, String> map = new HashMap<String, String>();        // 从request中取得输入流        InputStream inputStream = request.getInputStream();        // 读取输入流        SAXReader reader = new SAXReader();        Document document = reader.read(inputStream);        // 得到xml根元素        Element root = document.getRootElement();        Map<String,String> resultMap  =  getElementList(root,map);        // 释放资源        inputStream.close();        return resultMap;    }    /**     * 递归遍历xml     * @param element     * @param map     * @return     */    public static Map<String, String> getElementList(Element element, Map<String, String> map) {        List<Element> elements = element.elements();        map.put(element.getName(), element.getText());        if(!elements.isEmpty()){//有子元素            Iterator<Element> it = elements.iterator();            while (it.hasNext()) {                Element e = (Element) it.next();                getElementList(e,map);            }        }        return map;    }    /**     * 文本消息对象转换成xml     *     * @param textMessage 文本消息对象     * @return xml     */    public static String textMessageToXml(RespTextMessage textMessage) {        xstream.alias("xml", textMessage.getClass());        return xstream.toXML(textMessage);    }    /**     * 扩展xstream,使其支持CDATA块     */    private static XStream xstream = new XStream(new XppDriver() {        public HierarchicalStreamWriter createWriter(Writer out) {            return new PrettyPrintWriter(out) {                // 对所有xml节点的转换都增加CDATA标记                boolean cdata = true;                @SuppressWarnings("unchecked")                public void startNode(String name, Class clazz) {                    super.startNode(name, clazz);                }                protected void writeText(QuickWriter writer, String text) {                    if (cdata) {                        writer.write("<![CDATA[");                        writer.write(text);                        writer.write("]]>");                    } else {                        writer.write(text);                    }                }            };        }    });}
0 0
原创粉丝点击