在今天以前我还没有用过代码解析过SOAP报文,更别提转成JAVA对象了,今天的任务中报文这个模样的,(为防止数据信息,以下数据我故意打乱了防止泄露什么信息.)

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="urn:WSSOP">
<SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<ns2:CallWSSOP>
<objInputData>
<m-strOrderID>2019123041123509590670</m-strOrderID>
<m-strSerialNumber>85213365571107</m-strSerialNumber>
<nPriority>0</nPriority>
<m-strSwitchid>C123L21231302</m-strSwitchid>
<m-vServList>
<m-strServName>YYH1232</m-strServName>
</m-vServList>
<m-vVarList>
<m-strName>G012302</m-strName>
<m-strValue>455020096628454</m-strValue>
</m-vVarList>
<m-vVarList>
<m-strName>G123004</m-strName>
<m-strValue>85361235571107</m-strValue>
</m-vVarList>
<m-vVarList>
<m-strName>G123071</m-strName>
<m-strValue>0085123265571107</m-strValue>
</m-vVarList>
</objInputData>
</ns2:CallWSSOP>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

上面是使用POSTMAN美化之后的报文样子,最开始的报文模样是这样的

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="urn:WSSOP"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><ns2:CallWSSOP><objInputData><m-strOrderID>2019041509590670</m-strOrderID><m-strSerialNumber>85365571107</m-strSerialNumber><nPriority>0</nPriority><m-strSwitchid>CL02</m-strSwitchid><m-vServList><m-strServName>YYH2</m-strServName></m-vServList><m-vVarList><m-strName>G002</m-strName><m-strValue>455020096628454</m-strValue></m-vVarList><m-vVarList><m-strName>G004</m-strName><m-strValue>85365571107</m-strValue></m-vVarList><m-vVarList><m-strName>G071</m-strName><m-strValue>0085265571107</m-strValue></m-vVarList></objInputData></ns2:CallWSSOP></SOAP-ENV:Body></SOAP-ENV:Envelope>

一.美化报文

美化报文不是为了别人,是为了自己看起来方便一点点,有助于了解对象结构。  美化工具可能很多,手边的工具可能就POSTMAN,就以这个为例了,相信人手都会装有一个。

在POSTMAN中随意打开一个,Body里面贴上原始报文,然后调成XML, 点击Beauty即可美化报文.

wsdl文件

由于组长发给我的文档里面没有这个SOAP的地址,只有一份接口参数说明以及wsdl文件,接口地址暂时还没给我,所以我们利用wsdl文件生成java实体类,soap的url也是一样的效果.

以下是操作步骤,将wsdl文件放到工程的某个文件目录下,右击 WebService—>Generate  Java Code from wsdl  (这里指定wsdl路径应该是一样的效果)—>  选定 Axis2  和 JaxB,以及生成的目录即可,但是每次生成位置稍有不对,手动移下就行了,这样就生成了Java对象.

四.采坑的点

不知道为什么按照StackOverFlow啊、博客方法,解析总会存在问题;而别人好像又能够解析成功,可能每个人的报文不一样的原因,https://stackoverflow.com/questions/19395400/jaxb-unmarshall-with-namespaces-and-prefix  .

按照别人写的直接获取SoapBody在使用extractContentAsDocument方法,就能够解析成功,而到了我这里解析下来java实体类中所有属性都是空的,于是我就想到的上面的方式,这样加入SoapBody中存在多个属性,比如和CallWSSOP同级的java类,也能够解析出来.

另外我尝试了好久去利用@XmlNs发现,这个注解好像根本不起作用,这里面待研究的好多,但是以后碰到像我遇到这么复杂的报文,解析方式按照上面来就可以啦.

附上Marsharl  API官网一份,https://docs.oracle.com/javase/7/docs/api/javax/xml/bind/Marshaller.html

SOAP报文转成JAVA对象的更多相关文章

  1. 利用JAVA反射机制将JSON数据转换成JAVA对象

    net.sf.json.JSONObject为我们提供了toBean方法用来转换为JAVA对象, 功能更为强大,  这里借鉴采用JDK的反射机制, 作为简单的辅助工具使用,   有些数据类型需要进行转 ...

  2. json字符串转json对象,json对象转换成java对象

    @RequestMapping(value = "updateInvestorApplyAccountNo", method = RequestMethod.POST) @Resp ...

  3. json 串转成 java 对象再拼接成前台 html 元素

    获取商品参数 json 串,转成 java 对象,再拼接成前台 html 的Service方法 @Override public String getItemParam(Long itemId) { ...

  4. json字符串转成 json对象 json对象转换成java对象

    import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject; 依赖包 <dependency> ...

  5. 将String类型的json字符串转换成java对象

    1,import com.fasterxml.jackson.databind.ObjectMapper; ObjectMapper mapper = new ObjectMapper(); Mycl ...

  6. 简单数据访问类,生成简单SQL,自动转换成java对象

    import java.util.HashMap; import java.util.List; import java.util.Map; import org.slf4j.Logger; impo ...

  7. Java读取Excel转换成JSON字符串进而转换成Java对象

    Jar包

  8. json转成java对象

    avro生成的代码里,String是CharSequence,不能通过Gson反序列化,于是有了下面的代码,ParseArray里还不完善: static <T> List<T> ...

  9. json字符串转换成java对象

随机推荐

  1. 在windows上传一个新的项目到GitHub上

    不多说,直接上步骤 1,新建GitHub的账号密码. 2,新建一个项目  点击new repository 3,选择自己项目,填写格式 点击创建  create  repository,这时候一个雏形 ...

  2. gulp使用详解

    前面整理了 gulp使用入门,本节介绍相关的压缩 1.压缩js文件 步骤同基础步骤,相关可以看入门篇 npm install gulp-uglify --save-dev 引入js压缩库 gulpfi ...

  3. SVN客户端操作

    版权声明:本文为博主原创文章,转载请注明原文出处. https://blog.csdn.net/zzfenglin/article/details/50937119   下面我们来了解一下SVN客户端 ...

  4. PopupWindow计算弹出位置

    1.首先自定义PopupWindow    popWindowView= LinearLayout.inflate(context, R.layout.popupWindow,null);    po ...

  5. MATLAB2016a安装破解教程

    首先,下载软件:下面是某博主的分享,可以下载软件. 链接:https://pan.baidu.com/s/1i6BgD8p       密码:17gg  第一步:安装软件 1,下载文件,得到R2016 ...

  6. 如何高效地写CSS--等以后有空多加总结一下

    CSS写的并不多,如果从零开始的项目,自己一定想搬砖来得容易点.CSS编写一定有其工程化的方法,来时编写更加有效率. 考虑将CSS的预处理LESS.Sass或Stylus引入,或者将CSS的后处理Po ...

  7. 【转载】ARCHIVE_LAG_TARGET参数的作用(定时切换redo)

    (一)  设置archive_lag_target参数1.      一旦设置了archive_lag_target初始化参数,数据库将会周期性的检查实例的当前重做日志.如果遇到下列情况,实例将会切换 ...

  8. Hadoop 单表关联

    前面的实例都是在数据上进行一些简单的处理,为进一步的操作打基础.单表关联这个实例要求从给出的数据中寻找到所关心的数据,它是对原始数据所包含信息的挖掘.下面进入这个实例. 1.实例描述 实例中给出chi ...

  9. Git使用详细教程(1):工作区、暂存区、本地仓库、远程仓库

    之前的写过一篇如何在服务器上搭建Git服务Git服务器搭建,接下来的一段时间,我将详细的讲解Git的使用.看如下一张图片,本篇主要理解一些基本概念. 图中几个名词的意思如下: workspace: 工 ...

  10. Linux 下 安装Python第三方模块工具箱pip,以及用pip安装的方法

    下载文件 wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate 执行安装 python get-pip.py 可以做一个软连 ...