package com.framework.loippi.utils.yinliang; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.json.JSONObject; import org.json.XML; import java.io.ByteArrayInputStream; import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * <p> * xml工具类 * </p> * * @date 2019/12/5 17:40 */ public class XmlUtil { //编码 private static final String charsetName = "GBK"; /** * 获取内容-递归 */ private static Map<String, Object> getContentMap(Element root, Iterator it) { Map<String, Object> rootMap = new HashMap<>(); Map<String, Object> nextRootMap = new HashMap<>(); while (it.hasNext()) { Element nextRoot = (Element) it.next(); Iterator nextIt = nextRoot.elementIterator(); if (nextIt.hasNext()) { //当前xml标签下,存嵌套了其他标签 Map<String, Object> nextContentMap = getContentMap(nextRoot, nextIt); nextRootMap.putAll(nextContentMap); } else { //当前xml标签下,只有值,未嵌套其他标签 nextRootMap.put(nextRoot.getName(), nextRoot.getTextTrim()); } } rootMap.put(root.getName(), nextRootMap); return rootMap; } /** * xml转map * * @param xml xml字符串 * @return map对象 */ public static Map<String, Object> xmlToMap(String xml) { try { SAXReader reader = new SAXReader(); String xmlStr = reader.read(new ByteArrayInputStream(xml.getBytes(charsetName))).asXML(); Document document = DocumentHelper.parseText(xmlStr); Element root = document.getRootElement(); Iterator it = root.elementIterator(); //递归 xml转 map return getContentMap(root, it); } catch (DocumentException | UnsupportedEncodingException e) { e.printStackTrace(); } return null; } /** * map转xml * * @param map map参数值 * @return xml字符串 */ public static String mapToXml(Map<String, Object> map) { JSONObject json = new JSONObject(map); return "<?xml version=\"1.0\" encoding=\""+charsetName+"\"?>" + XML.toString(json); } /** * xml转json * * @param xmlString xml字符串 * @return JSONObject对象 */ public static JSONObject xmlToJSONObject(String xmlString) { return XML.toJSONObject(xmlString); } }
来源:CSDN
作者:hellcw
链接:https://blog.csdn.net/hellcw/article/details/103462064