/**
* XML报文解析
* @param docStr
*/
private Map<String, Object> analysisXmlStr(String xmlStr) {
try {
Map<String, Object> analysisResultMap = new HashMap<>();
if (StringUtils.isEmpty(xmlStr)) {
return analysisResultMap;
}
org.dom4j.Document payResponseDoc = DocumentHelper.parseText(xmlStr);
org.dom4j.Element rootElement = payResponseDoc.getRootElement();
// Header
Node headerNode = rootElement.selectSingleNode("Header");
String status = headerNode.selectSingleNode("Status").getStringValue();
// Response
Node responseNode = rootElement.selectSingleNode("Response");
if (null == responseNode) {
return analysisResultMap;
}
Node orderStatusNode = responseNode.selectSingleNode("OrderStatus");
if (null == orderStatusNode) {
return analysisResultMap;
}
String orderStatus = orderStatusNode.getStringValue();
String platformCode = responseNode.selectSingleNode("PlatformCode").getStringValue();
String payAmount = responseNode.selectSingleNode("PayAmount").getStringValue();
String realPayAmount = responseNode.selectSingleNode("RealPayAmount").getStringValue();
String orderId = responseNode.selectSingleNode("OrderId").getStringValue();
// Response - TradeList
Node tradeListNode = responseNode.selectSingleNode("TradeList");
String batchNo = tradeListNode.selectSingleNode("TradeIfo").selectSingleNode("BatchDetailNo").getStringValue(); // 封装
analysisResultMap.put("status", status);
analysisResultMap.put("orderStatus", orderStatus);
analysisResultMap.put("platformCode", platformCode);
analysisResultMap.put("payAmount", payAmount);
analysisResultMap.put("realPayAmount", realPayAmount);
analysisResultMap.put("orderId", orderId);
analysisResultMap.put("batchNo", batchNo);
return analysisResultMap;
} catch (DocumentException e) {
logger.error("报文解析异常!", e);
}
return null;
}

  

XML报文解析的更多相关文章

  1. xml报文解析和组装

    package com.xjts.cipher.util;import java.io.File;import java.io.FileWriter;import java.io.IOExceptio ...

  2. SOAP XML报文解析

    import java.util.HashMap;import java.util.List;import java.util.Map; import org.dom4j.Document;impor ...

  3. Java开发笔记(一百零九)XML报文的定义和解析

    前面介绍了JSON格式的报文解析,虽然json串短小精悍,也能有效表达层次结构,但是每个元素只能找到对应的元素值,不能体现更丰富的样式特征.比如某个元素除了要传输它的字符串文本,还想传输该文本的类型. ...

  4. java 写webservice接口解析xml报文

    1 <!--解析xml报文--> 2 <dependency> 3 <groupId>dom4j</groupId> 4 <artifactId& ...

  5. xml报文的装配解析

    xstream dom 将map自动转化为xml报文 http://blog.csdn.net/lisheng19870305/article/details/45847985 报文的通信

  6. 解析xml报文,xml与map互转

    这段时间写了一个关于xml报文的工具类,做一下具体的讲解: xml文本 <NTMMessage version="1.03"> <NTMHeader> &l ...

  7. ISO8583报文解析

    在此只写了一个8583报文的拆包,组包其实也差不多的. 不多说直接上文件, 具体思路过程,在解析类里面写的有. 其中包含了四个文件 8583resp.txt报文 ISO8583medata配置文件 B ...

  8. 报文解析及CRC类

    /// <summary> /// 报文解析转换类 /// </summary> public class DatagramConvert { public static En ...

  9. 通过正则表达式实现简单xml文件解析

    这是我通过正则表达式实现的xml文件解析工具,有些XHTML文件中包含特殊符号,暂时还无法正常使用. 设计思路:常见的xml文件都是单根树结构,工具的目的是通过递归的方式将整个文档树装载进一个Node ...

  10. JAVA 中XML的解析

    XML:  可扩展标记语言(extensible Markup Language) 用于标记电子文件使其具有结构性的标记语言.XML可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定 ...

随机推荐

  1. 升级sqlite3

    原文连接: https://blog.zhheo.com/p/22f4cbb2.html 创建一个工作目录(可选) Code 12 mkdir sqlite3_upgradecd sqlite3_up ...

  2. QT--弹出新的对话框 show()/exec()的区别

    show()显示非模态对话框,exec()显示模态对话框. 非模态对话框不会阻塞程序的线程,因此 如果你的对话框时创建在栈上,跳出作用域之后,对象便销毁了,对话框会一闪而过: 如果使用new在堆上创建 ...

  3. HANDLE和HMOUDLE、HWND讲解

    HWND是线程相关的,通常指明窗口句柄,通过句柄找到窗口所属进程和线程 Handle 是代表系统的内核对象,如文件句柄,线程句柄,进程句柄.系统对内核对象以链表的形式进行管理,载入到内存中的每一个内核 ...

  4. NLog日志 富文本编辑器

    NLog日志 NLog是什么 NLog是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码.NLog是一个简单灵活的.NET日志记录类库.通过使用NLog,我们 ...

  5. Jupyter notebook upload无法加载本地ipynb文件

    可能是本地浏览器(IE)问题,修改默认浏览器.

  6. ref(代替id)

    App.vue <template> <div> <Student ref="str"/> <h3 v-text="age&qu ...

  7. CIL指令和指针类型的操作

    对象引用的使用在CIL中受到严格限制.它们几乎完全被使用带有VOS(Virtual Object System)指令,这些指令是专门为处理对象和部分对象引用而设计的. 常规操作如下: 首先我们需要将加 ...

  8. oracle 分配权限命令

    Oracle分配权限 以管理员身份登录数据库 创建用户:create user [username] identified by [password]; 赋予登录权限:grant create ses ...

  9. html入門 如何 區別行級元素 和 塊級元素

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  10. 图像高斯滤波的Verilog实现

    高斯滤波的原理: 高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程.通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过 ...