package com.kk.util; import com.alibaba.fastjson.JSONObject; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import java.util.HashMap; import java.util.List; import java.util.Map; public class XmlUtil { private static final Log logger = LogFactory.getLog(XmlUtil.class); public static Map<String, String> parseXml(InputStream inputStream) { try { Map<String, String> map = new HashMap<String, String>(); SAXReader reader = new SAXReader(); Document document = reader.read(inputStream); Element root = document.getRootElement(); List<Element> elements = root.elements(); for (Element e : elements) { map.put(e.getName(), e.getText()); } return map; } catch (Exception e) { logger.error(e.getCause()); return null; } finally { try { inputStream.close(); } catch (IOException e) { logger.error(e.getCause()); return null; } } } public static JSONObject parseXmlJson(String xml) { try { SAXReader builder = new SAXReader(); Document document = builder.read(new StringReader(xml)); Element root = document.getRootElement(); List<Element> elements = root.elements(); JSONObject json = new JSONObject(); for (Element e : elements) { if (e.isTextOnly()) { json.put(e.getName(), e.getText()); } else { json.put(e.getName(), parseXmlJson(e)); } } return json; } catch (Exception e) { logger.error(e.getCause()); return null; } } public static JSONObject parseXmlJson(Element root) { try { List<Element> elements = root.elements(); JSONObject json = new JSONObject(); for (Element e : elements) { if (e.isTextOnly()) { json.put(e.getName(), e.getText()); } else { json.put(e.getName(), parseXmlJson(e)); } } return json; } catch (Exception e) { logger.error(e.getCause()); return null; } } public static Map<String, String> parseXml(String xml) { try { Map<String, String> map = new HashMap<String, String>(); SAXReader builder = new SAXReader(); Document document = builder.read(new StringReader(xml)); Element root = document.getRootElement(); List<Element> elements = root.elements(); for (Element e : elements) { map.put(e.getName(), e.getText()); } return map; } catch (Exception e) { logger.error(e.getCause()); return null; } } public static String toXml(Map<String, String> data) { Document document = DocumentHelper.createDocument(); Element nodeElement = document.addElement("xml"); for (String key : data.keySet()) { Element keyElement = nodeElement.addElement(key); keyElement.setText(data.get(key)); } try { ByteArrayOutputStream out = new ByteArrayOutputStream(); OutputFormat format = new OutputFormat(" ", true, "UTF-8"); XMLWriter writer = new XMLWriter(out, format); writer.write(document); return out.toString("UTF-8"); } catch (Exception ex) { logger.error(ex.getCause()); } return null; } public static String toXml(Map<String, String> headData, Map<String, String> bodyData) { Document document = DocumentHelper.createDocument(); Element message = document.addElement("message"); Element head = message.addElement("head"); for (String key : headData.keySet()) { Element keyElement = head.addElement(key); keyElement.setText(headData.get(key)); } Element body = message.addElement("body"); for (String key : bodyData.keySet()) { Element keyElement = body.addElement(key); keyElement.setText(bodyData.get(key)); } try { ByteArrayOutputStream out = new ByteArrayOutputStream(); OutputFormat format = new OutputFormat("", true, "UTF-8"); XMLWriter writer = new XMLWriter(out, format); writer.write(document); return out.toString("UTF-8"); } catch (Exception ex) { logger.error(ex.getCause()); } return null; } }