xml转map工具类

这篇具有很好参考价值的文章主要介绍了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的key
                String key = node.getName();
                Map<String, Object> mapTemp = new HashMap<>();
                toMap(node, mapTemp);
                map.put(key, mapTemp);
            }
        }else{
        // 叶子节点,直接将值放入
            map.put(element.getName(), element.getStringValue());
        }
    }
}

总结:虽然可以直接取xml节点,但是为了方便自己跟方便他人,还是写了一个工具类出来,这样别人有需要也可以使用。文章来源地址https://www.toymoban.com/news/detail-655129.html

到了这里,关于xml转map工具类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java中操作Xml使用备忘[ Hutool工具类XmlUtil、XStream ]

    List item 1. Hutool中XmlUtil的使用简介 2. Hutool中XmlUtil快速读取Xml字符串某个节点值 [简单取值时,推荐使用] 2-1 Hutool工具包Maven依赖和测试Xml字符串如下 2-2 读取Xml中的节点的值 3. Hutool中XmlUtil详细操作示例 3-1 Xml示例字符串如下 3-2 查询标签内的属性 3-3 查询一对标签中的文本 3-

    2024年02月06日
    浏览(32)
  • Java02-迭代器,数据结构,List,Set ,Map,Collections工具类

    目录 什么是遍历? 一、Collection集合的遍历方式 1.迭代器遍历 方法 流程 案例 2. foreach(增强for循环)遍历 案例 3.Lamdba表达式遍历 案例 二、数据结构 数据结构介绍 常见数据结构 栈(Stack) 队列(Queue) 链表(Link) 散列表(Hash Table) 树(Tree) List接口 ArraysList集合 Linked

    2024年02月14日
    浏览(35)
  • <Java工具类>json字符串、List Map,List 对象转换为相应的JavaBean对象

    依赖: 工具类(直接上代码): 使用场景: (1).使用泛型方法:把json字符串转换为相应的JavaBean对象 ; 一般用于:Controller层: 例如: (2).List Map转换List 对象:如List,将第二个参数传递为Student对象; (3).List 对象转换List Map:

    2024年02月12日
    浏览(50)
  • XML Map 端口进阶篇——常用关键字和格式化器详解

    XML Map 端口是用于在不同XML之间建立关系映射的工具,允许通过拖拽操作实现源XML和目标 XML之间的数据字段映射,除此之外,XML Map 端口还提供了其它丰富多彩的功能,使用户能够更加灵活和高效的处理XML 数据映射任务,让我们一同深入探索这些功能吧。 以生成850订单为例:

    2024年02月21日
    浏览(28)
  • 【加强版】SAX解析XML返回对应格式的Map对象(解决元素递归嵌套)

    SAX解析XML返回对应格式的Map对象_辛丑年正月十五的博客-CSDN博客        上篇文章实现了xml元素节点的解析并返回了对应格式的Map对象,但是遗留了一个问题,就是当xml中的元素存在递归嵌套时就解析不了,因为qname属性会重复,导致后一个元素会覆盖前一个元素。     

    2024年02月10日
    浏览(32)
  • 【工具】XML和JSON互相转换

    2024年02月12日
    浏览(35)
  • xml和json互转工具类

    这里为了更全面的演示,所以嵌套三层 第三层: 第二层: 第三层: json转xml  xml转json:

    2024年02月10日
    浏览(33)
  • bean和xml相互转换工具类

    因为最近对接接口,需要xml和bean的相互转换,所以就写下这个工具类,记录一下,方便日后使用。 ① 常用API JAXBContext类,是应用的入口,通过该类创建序列化和反序列化对象,也即编组对象和解组对象; Marshaller 编组接口,将Java对象序列化为XML数据; Unmarshaller 解组接口,

    2024年02月15日
    浏览(22)
  • 13.JavaWeb & XML:构建结构化数据的重要工具

    目录 导语: 一、XML概念 (1)可拓展 (2)功能-存储数据 (3)xml与html的区别 二、XML内容 三、XML用途 四、案例:使用XML构建在线书店的书籍数据库 结语:     在当今的信息时代,数据结构化和管理成为了一个重要课题。XML(eXtensible Markup Language,可扩展标记语言)作为一

    2024年04月09日
    浏览(39)
  • 自己写一个svg转化为安卓xml的工具类

    自己写一个svg转化为安卓xml的工具类_张风捷特烈的博客-CSDN博客 svg资源阿里巴巴矢量资源网站:iconfont-阿里巴巴矢量图标库 感觉一般的svg到Android可用的xml差异有点规律,主要的就是path 秉承着能用代码解决的问题,绝对不动手。能够靠智商解决的问题,绝对不靠体力的大无畏

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包