Java|Java 解析xml报文放入Map,并判断所有xml标签是否为空
在网上找了很久,找到的一个比较好的xml解析方法,封装好的解析xml报文的方法:
public class analyxml{public Map 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 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
}
}
}
}
测试xml报文:
FMSPAY0010
04
20181029085400000001
20181023085400
20181023
20181105153740558
银行编号或密码不正确!
测试类:
import java.util.Map;
import org.dom4j.DocumentException;
import com.com.analyxml;
public class test2 { public static void main(String[] args) throws DocumentException {
// TODO Auto-generated method stubString xml = "FMSPAY001004 20181029085400000001 20181023085400 20181023 9902 20181105161524325 银行编号或密码不正确! ";
analyxml aly = new analyxml();
Map map = aly.parse(xml);
String ReturnCode = map.get("ReturnCode").toString().trim();
String ResponseTime = map.get("ResponseTime").toString().trim();
System.out.println("ReturnCode===" + ReturnCode);
System.out.println("ResponseTime===" + ResponseTime);
}}
【Java|Java 解析xml报文放入Map,并判断所有xml标签是否为空】结果为:
文章图片
由于项目需要尽可能的把错误提示的明显一点,(如果请求委托方的信息有问题,委托方也会返回xml报文回来,但是所有标签都是空值,)所以要判断xml的所有标签是否都是空值,在网上找了很久没有找到合适的判断xml是否为空的方法,于是写了一个小方法,如下: (利用的是set集合的不可重复性)
public static boolean ishave(Map map){//利用set的不可重复性来判断Map中是否所有的value都是空Set hs = new HashSet();
boolean status = false;
//遍历Map
for (Entry entry : map.entrySet()) {
System.out.println("key= " + entry.getKey());
System.out.println("value= "https://www.it610.com/article/+ entry.getValue());
hs.add(entry.getValue());
} if(hs.size()>1){
status = true;
}return status;
}
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- mybatisplus如何在xml的连表查询中使用queryWrapper
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- 数组常用方法一
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- Java|Java基础——数组
- RxJava|RxJava 在Android项目中的使用(一)
- java之static、static|java之static、static final、final的区别与应用