Xml字符串转Map 2022-01-07 java 说明:除head、body节点合并为一个Map,其余的都进行List转换; 比如XML: 文章图片 文章图片 文章图片 则节点为一个Map,VALUE为List,其中节点不显示名称,具体代码如下: import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; public class XmlUtils { private static final String HEAD = "head"; private static final String BODY = "body"; public static void main(String[] args) throws DocumentException { String xml = "3300038000500436222221234567890012016051015123810TEST01234310066865018010123060S10.01201605测试0.013100012379000000001测试账号021.0111111111100000001测试账号021.01111111111"; System.out.println(parseXmlStr(xml).toString()); }/** * 解析XML字符串 * * @param xml * @return * @throws DocumentException */ private static Map parseXmlStr(String xml) throws DocumentException { Document document = DocumentHelper.parseText(xml); Element root = document.getRootElement(); return parseElement(root); }/** * 解析Element * * @param root * @return */ @SuppressWarnings("unchecked") private static Map parseElement(Element root) { String rootName = root.getName(); Iterator rootItor = root.elementIterator(); Map rMap = new HashMap<>(); List rList = new ArrayList<>(); Map rsltMap = null; while (rootItor.hasNext()) { Element tmpElement = rootItor.next(); String name = tmpElement.getName(); if (rsltMap == null || (!HEAD.equals(name) && !BODY.equals(name) && !tmpElement.isTextOnly())) { if (!HEAD.equals(name) && !BODY.equals(name) && !tmpElement.isTextOnly() && rsltMap != null) { rList.add(rsltMap); } rsltMap = new HashMap<>(); } if (!tmpElement.isTextOnly()) { Iterator headItor = tmpElement.elementIterator(); while (headItor.hasNext()) { Element hElement = headItor.next(); if (hElement.isTextOnly()) { rsltMap.put(hElement.getName(), hElement.getTextTrim()); } else { rsltMap.putAll(parseElement(hElement)); } } } } rList.add(rsltMap); rMap.put(rootName, rList); return rMap; }} 测试结果: {ap=[{summary=测试0.01, tr_time=151238, cert_no=TEST01234, channel=0, tr_code=330003, sum=1, type=S, pay_month=201605, req_no=123456789001, user_no=22222, tr_acdt=20160510, sum_amt=0.01, reserved=, atom_tr_count=1, pay_acno=310066865018010123060, busi_no=3100012379, corp_no=8000500436, selsec_flg=0, tran=[{acname=测试账号, card_no=00000001, card_flag=0, amt=21.01, busino=111111111}, {acname=测试账号, card_no=00000001, card_flag=0, amt=21.01, busino=111111111}]}]} 【Xml字符串转Map】 推荐阅读 原神前期材料怎么刷 原神前期材料使用指南 原神古时孤影第三阶段有什么技巧 原神古时孤影第三阶段心得 x7|2000元档颜值最高的机型?曲面屏+65W闪充,还有256G大内存 姐弟恋超过6岁都不长久 姐弟恋英语 是什么让男人失去了娶你的勇气 缓解节后综合征七药膳 帮你快速恢复健康身体 吃活珠子的禁忌 vr飞行游戏配置,vr飞行模拟游戏 决明子荷叶茶怎样喝才减肥 go语言常量变量教学视频 go语言%c 男式毛衣有哪些花样 7步教你男士毛衣马甲花样编制 新手应该从哪些方面来学习理财? 原神元素反应是什么 原神元素反应简介 2021车险三者险价格明细 2021车损险费率 【剽悍牛人进化营求学模块】一个奔五的人在求学模块的反思 cad如何做图纸表格 韩涵一事后续来临,虎牙官方做法引无数网友不满,纷纷表示要卸载虎牙,如何点评? 今麦郎“凉白开”采用UHT125℃超高温烧开杀菌,可标压下水的沸点是99.974℃,是如何做到125℃的? 2023独生子女父母补贴最新发放标准,养老金3600和7200领取金额差多少? 熟的冻螃蟹怎么二次加热 Java|Java基础——数组 人工智能|干货!人体姿态估计与运动预测 java简介|Java是什么(Java能用来干什么?) Java|规范的打印日志 Linux|109 个实用 shell 脚本 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理 Spring注解驱动第十讲--@Autowired使用 SqlServer|sql server的UPDLOCK、HOLDLOCK试验 jvm|【JVM】JVM08(java内存模型解析[JMM]) 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)