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); } } }; } }); }
微信xml解析
最新推荐文章于 2024-07-01 02:52:43 发布