xml解析工具类

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;

/**
 * 

* xml工具类 *

* * @date 2019/12/5 17:40 */ public class XmlUtil { //编码 private static final String charsetName = "GBK"; /** * 获取内容-递归 */ private static Map getContentMap(Element root, Iterator it) { Map rootMap = new HashMap<>(); Map nextRootMap = new HashMap<>(); while (it.hasNext()) { Element nextRoot = (Element) it.next(); Iterator nextIt = nextRoot.elementIterator(); if (nextIt.hasNext()) { //当前xml标签下,存嵌套了其他标签 Map 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 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 map) { JSONObject json = new JSONObject(map); return "" + XML.toString(json); } /** * xml转json * * @param xmlString xml字符串 * @return JSONObject对象 */ public static JSONObject xmlToJSONObject(String xmlString) { return XML.toJSONObject(xmlString); } }

你可能感兴趣的:(java工具类)