java 使用 fastJson dom4j 包 xml 转 json

您所在的位置:网站首页 xml字符串转json字符串 java 使用 fastJson dom4j 包 xml 转 json

java 使用 fastJson dom4j 包 xml 转 json

2024-01-05 23:23| 来源: 网络整理| 查看: 265

废话

网上教程一大堆,简单直接能用的,不多,各种都是解析出来千奇百怪,后来研究了一下,主要问题其实就出在于xml文件,一个节点是对象还是列表,这个不太好区分,如果本身是列表,但是这个列表只有一条数据,这种情况就是容易误判了。

json 转 xml 的这里就忽略了,没难度,网上随便一搜一大堆。

导包 dom4j dom4j 1.6.1 com.alibaba fastjson 1.2.76 直接上工具类 public class XmlToJsonUtils { public static String xmlToJson(String xmlPath) { try { // 创建一个SAXReader解析器 SAXReader reader = new SAXReader(); // 读取xml文件,转换成Document结点 Document doc = reader.read(new File(xmlPath)); // 递归打印xml文档信息 JSONObject jsonObject = xmlToJsonRoot(doc); return jsonObject.toJSONString(); } catch (DocumentException e) { e.printStackTrace(); } return null; } /** * xml转json对象 * * @param document * @return */ public static JSONObject xmlToJsonRoot(Document document) { // 取根节点 Element root = document.getRootElement(); List elements = root.elements(); JSONObject jsonObject = new JSONObject(); jsonObject.put(root.getName(), elementToJson(elements)); return jsonObject; } /** * 递归读取节点,并简单判定节点状态(值、对象、列表三种状态) * * @param elements * @return */ public static Object elementToJson(List elements) { Object object = null; if (elements.isEmpty()) { return object; } if (elements.size() == 1) { //只有一条,算对象 JSONObject jsonObject = new JSONObject(); Element element = elements.get(0); List children = element.elements(); if (!children.isEmpty()) { jsonObject.put(element.getName(), elementToJson(children)); } else { jsonObject.put(element.getName(), element.getText()); } object = jsonObject; return object; } if (!elements.get(0).getName().equals(elements.get(1).getName())) { //同一层级的名称不一样,不是列表 JSONObject jsonObject = new JSONObject(); for (Element element : elements) { List children = element.elements(); if (!children.isEmpty()) { jsonObject.put(element.getName(), elementToJson(children)); } else { jsonObject.put(element.getName(), element.getText()); } } object = jsonObject; return object; } //同一层级的名称一样,是列表 List jsonList = new ArrayList(); for (Element element : elements) { JSONObject jsonObject = new JSONObject(); List children = element.elements(); if (!children.isEmpty()) { jsonObject = (JSONObject) elementToJson(children); } else { jsonObject.put(element.getName(), element.getText()); } jsonList.add(jsonObject); } object = jsonList; return object; } } 调用 IndexSecurities securities = JSON.parseObject(XmlToJsonUtils.xmlToJson(filePath), IndexSecurities.class);



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3