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】 推荐阅读 玉米面条怎么做好吃简单的做法 吃完洋葱怎么去味 商标注册的条件 哪些企业需要申请商标,怎么申请商标 云虚拟主机教学,云虚拟主机使用教程 vue|vue 如何实现表单校验 林蛙养殖技术大全视频 林蛙养殖技术 守夜是什么意思 如何去除保温杯硅胶圈异味 去除保温杯硅胶圈异味的方法 苹果手机迅雷一直闪退怎么办?iPhone迅雷闪退解决方法 安卓vr开发,安卓手机下载utovr软件点击浏览 吸引眼球好听的支付宝名字 唯美吸引眼球好听的支付宝名字 spss 生存分析,SPSS生存分析 去海边沙滩玩戴什么太阳镜最好 有哪些三维建模软件?三维绘图软件有哪些? 离合踏板是什么意思? 离合踏板啥意思 mysqladmin ping mysqlping方法 慢性病人群可以接种新冠病毒疫苗吗 csf 关键成功要素法分析的步骤 里约奥运会中国代表队旗手 2016里约奥运会中国队旗手会是谁 新冠疫苗加强针接种的注意事项 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组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)