xml转map json
xml转map json
<!--xml--> <dependency> <groupId>org.dom4j</groupId> <artifactId>dom4j</artifactId> <version>2.1.1</version> </dependency> <!--json--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> </dependency>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | package com.yw.test.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @description: xml 转map * @author: YW * @time: 2020/10/12 13:09 */ public class XmlToMapUtils { private static final Logger logger = LoggerFactory.getLogger(XmlToMapUtils. class ); /** * @description: xml格式字符串转换为map * @author: YW * @time: 2020/10/12 13:16 */ public static Map<String, Object> multilayerXmlToMap(String xml) { Document doc = null ; try { doc = DocumentHelper.parseText(xml); } catch (DocumentException e) { logger.error( "xml字符串解析,失败 --> {}" , e); } Map<String, Object> map = new HashMap<>(); if ( null == doc) { return map; } // 获取根元素 Element rootElement = doc.getRootElement(); // 获取根节点下单元素 recursionXmlToMap(rootElement, map); return map; } /** * @description: 多层 递归调用 element 节点元素 outmap 用于存储xml数据的map * @author: YW * @time: 2020/10/12 13:14 */ @SuppressWarnings ( "unchecked" ) private static void recursionXmlToMap(Element element, Map<String, Object> outmap) { // 得到根元素下的子元素列表 List<Element> list = element.elements(); int size = list.size(); if (size == 0 ) { // 如果没有子元素,则将其存储进map中 outmap.put(element.getName(), element.getTextTrim()); } else { // innermap用于存储子元素的属性名和属性值 Map<String, Object> innermap = new HashMap<>(); // 遍历子元素 list.forEach(childElement -> recursionXmlToMap(childElement, innermap)); outmap.put(element.getName(), innermap); } } public static void main(String[] args) { String s3= "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n" + "<note>\n" + "<to>George</to>\n" + "<from>John</from>\n" + "<heading>Reminder</heading>\n" + "<body>Don't forget the meeting!</body>\n" + "</note>" ; Map<String, Object> map = multilayerXmlToMap(s3); String s = JSON.toJSONString(map, SerializerFeature.WriteMapNullValue); System.out.println(s); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现