dom4j解析xml报文

Posted sunny-miss

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dom4j解析xml报文相关的知识,希望对你有一定的参考价值。

技术图片
package com.answern.claimv2.service.utils;

import com.alibaba.dubbo.common.utils.IOUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class XmlUtil {
    public Map<String,Object> map = new HashMap<>();
    public Map parse(String soap) throws DocumentException {
        Document doc = DocumentHelper.parseText(soap);//报文转成doc对象
        Element root = doc.getRootElement();//获取根元素,准备递归解析这个XML树
        getCode(root);
        return map;
    }

    public void getCode(Element root) {
        if (root.elements() != null) {
            List<Element> list = root.elements();//如果当前跟节点有子节点,找到子节点
            for (Element e : list) {//遍历每个节点
                if (e.elements().size() > 0) {
                    getCode(e);//当前节点不为空的话,递归遍历子节点;
                }
                if (e.elements().size() == 0) {
                    map.put(e.getName(), e.getTextTrim());
                }//如果为叶子节点,那么直接把名字和值放入map
            }
        }
    }

    public static void main(String[] args) throws Exception{
        String[] strings = IOUtils.readLines(new File("C:\Users\Administrator\Desktop\返回报文.xml"));
        StringBuffer sb = new StringBuffer();
        for (String s : strings){
            sb.append(s);
        }
        //初始化报文,调用parse方法,获得结果map,然后按照需求取得字段,或者转化为其他格式
        Map map = new XmlUtil().parse(sb.toString());
        System.out.println(map.get("response_code"));

    }
}
View Code
<PACKET>
  <responsehead>
    <response_code>1</response_code>
    <error_message>成功!</error_message>
  </responsehead>
  <responsebody></responsebody>
</PACKET>

  

以上是关于dom4j解析xml报文的主要内容,如果未能解决你的问题,请参考以下文章

dom4j解析xml文件,红框里面的是干嘛用的。

java怎么解析文本文件中的soap报文

关于dom4j 解析xml文件的问题

200分求解:dom4j 使用XPATH解析。。诡异的问题

java xml报文从客户端传到服务端解析的小程序

java 怎样解析 excel生成的xml文件