当前位置: 首页 > news >正文

xml转map工具类

背景:最近遇到接口返回是xml,所以需要整一个转换的工具类,方便后续其他xml处理。

依赖引入:

<dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.1</version>
</dependency>

工具类代码如下:

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;/*** xml工具类* @author Litluecat*/
@Slf4j
public class MyXmlUtils {/*** 将xml转成map对象* @param xml* @param map* @return 返回异常错误*/public static String xml2Map(String xml, Map<String, Object> map) {String errorMsg = "";try{Document document = DocumentHelper.parseText(xml);// 通过document对象获取根节点Element element = document.getRootElement();// 通过element对象的elementIterator方法获取迭代器toMap(element, map);} catch (DocumentException e) {errorMsg = "xml转map异常!异常xml:" + xml;//log.error("xml转map异常!异常xml:{}", xml, e);}return errorMsg;}/*** 遍历所有节点* @param element* @param map*/private static void toMap(Element element, Map<String, Object> map){Iterator it = element.elementIterator();// 判断是否为叶子节点if(it.hasNext()){// 非叶子节点,需要继续往下层遍历,直到找到叶子节点while (it.hasNext()) {Element node = (Element) it.next();// 节点名称,作为map的keyString key = node.getName();Map<String, Object> mapTemp = new HashMap<>();toMap(node, mapTemp);map.put(key, mapTemp);}}else{// 叶子节点,直接将值放入map.put(element.getName(), element.getStringValue());}}
}

总结:虽然可以直接取xml节点,但是为了方便自己跟方便他人,还是写了一个工具类出来,这样别人有需要也可以使用。

http://www.lryc.cn/news/131326.html

相关文章:

  • C++并发多线程--std::future_status、std::shared_future和std::atomic的使用
  • Redis在Java中的基本使用
  • 4.2 C++ Boost 内存池管理库
  • Django模型基础
  • 导读-Linux简介
  • 判断平面中两射线是否相交的高效方法
  • 基于VUE3+Layui从头搭建通用后台管理系统(前端篇)八:自定义组件封装上
  • RabbitMq交换机类型介绍
  • 中国电信秋招攻略,考试内容分析
  • prompt-engineering-note(面向开发者的ChatGPT提问工程学习笔记)
  • 2011-2021年数字普惠金融指数Bartik工具变量法(含原始数据和Bartik工具变量法代码)
  • [ MySQL ] — 常见函数的使用
  • Spring AOP实现切入增强的两种方式(execution+annotation)-Demo
  • 人工智能在网络安全中的作用:当前的局限性和未来的可能性
  • BC99 序列中整数去重
  • [PyTorch][chapter 52][迁移学习]
  • Ceph如何操作底层对象数据
  • sklearn机器学习库(二)sklearn中的随机森林
  • FlutterBoost 实现Flutter页面内嵌iOS view
  • 走嵌入式还是纯软件?学长告诉你怎么选
  • 【云计算原理及实战】初识云计算
  • Open3D (C++) 基于拟合高差的点云地面点提取
  • 认识Transformer:入门知识
  • 《TCP IP网络编程》第二十四章
  • 【AI】文心一言的使用
  • CSAPP Lab2:Bomb Lab
  • Java中使用流将两个集合根据某个字段进行过滤去重?
  • 自动驾驶HMI产品技术方案
  • Git判断本地是否最新
  • Spring 整合RabbitMQ,笔记整理