将xml字符串转换成map

首先需要导入dom4j.jar包,dom4j.jar包的官方下载地址:https://dom4j.github.io/
dom4j.jar官方下载页面

进入下载页面选择自己想要的版本下载,然后导入即可。

下面直接看代码:

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;

/**
 * @description 将xml字符串转换成map
 * @param xml
 * @return Map
 * @author chenfan
 * @date 2021-05-13 11:13:08
 */
 public static Map readStringXmlToMap(String xml) {
        Map map = new HashMap();
        Document doc = null;
        try {
            // 将字符串转为XML
            doc = DocumentHelper.parseText(xml);
            // 获取根节点
            Element rootElt = doc.getRootElement();
            // 拿到根节点的名称
            System.out.println("根节点:" + rootElt.getName());
            //拿到根节点的IsSucessfull
            String IsSucessfull = rootElt.elementTextTrim("IsSucessfull");
            System.out.println("IsSucessfull"+IsSucessfull);
            map.put("IsSucessfull",IsSucessfull);
            //拿到根节点的Message
            String Message = rootElt.elementTextTrim("Message");
            System.out.println("Message"+Message);
            map.put("Message",Message);
            // 获取根节点下的子节点DataX
            Iterator iter = rootElt.elementIterator("DataX");
            // 遍历DataX节点
            while (iter.hasNext()) {
                Element recordEle = (Element) iter.next();
                // 拿到head节点下的子节点TRADE_MONEY
                String TRADE_MONEY = recordEle.elementTextTrim("TRADE_MONEY");
                System.out.println("TRADE_MONEY:" + TRADE_MONEY);
                map.put("TRADE_MONEY", TRADE_MONEY);
                // 获取子节点head下的子节点BARGAINNO
                String BARGAINNO = recordEle.elementTextTrim("BARGAINNO");
                System.out.println("BARGAINNO:" + BARGAINNO);
                map.put("BARGAINNO", BARGAINNO);
                // 获取子节点head下的子节点BANK_ACCOUNT
                String BANK_ACCOUNT = recordEle.elementTextTrim("BANK_ACCOUNT");
                System.out.println("BANK_ACCOUNT:" + BANK_ACCOUNT);
                map.put("BANK_ACCOUNT", BANK_ACCOUNT);
                // 获取子节点head下的子节点TRADE_INFO
                String TRADE_INFO = recordEle.elementTextTrim("TRADE_INFO");
                System.out.println("TRADE_INFO:" + TRADE_INFO);
                map.put("TRADE_INFO", TRADE_INFO);
            }

        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return map;
  }

测试样例:

 public static void main(String[] args) {

        String xmlString = "<Result>" +
                "<IsSucessfull>0:失败;1:成功</IsSucessfull>" +
                "<DataX>" +
                "<USER_NAME>张三</USER_NAME>" +
                "<USER_ID>441214199010100808</USER_ID>" +
                "<BANK_ACCOUNT>6612376329000095192</BANK_ACCOUNT>" +
                "<USER_MONEY>1000.00</USER_MONEY>" +
                "<ZE>1000.00</ZE>" +
                "<YE>2000.00</YE>" +
                "</DataX>" +
                "<Message>查询成功</Message>" +
                "</Result>";

        Map map = readStringXmlToMap(xmlString);
        System.out.println(map);
        System.out.println(map.get("IsSucessfull"));
   }

运行结果:
运行结果

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值