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