dom4j解析soap报文

这篇博客介绍了如何利用dom4j库解析SOAP XML响应报文。首先,通过client方式请求webService并获取报文,然后设置命名空间解析报文,找到根节点,并通过XPath表达式选择特定元素。例如,提取出`<DATA><RECORD><CODE>`的值。此外,还提到了可以使用简单方式获取节点或循环遍历报文内容,将信息存储到Map中。

使用了dom4j.jar,通过client方式请求webService报文后,返回报文信息为:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soap:Body>
        <ns1:xxba_BayxxbResponse xmlns:ns1="http://datarecord.webservice.ssis.com">
            <ns1:out>
                <DATA xmlns="http://webservice.entity.ssis.com">
                    <RECORD>
                        <CODE>-0307</CODE>
                        <ERRORMSG xsi:nil="true"></ERRORMSG>
                        <KEY1>767</KEY1>
                        <KEY2></KEY2>
                        <MSG>公民身份号码--校验位错误</MSG>
                        <NO>0</NO>
                    </RECORD>
                </DATA>
                <PACKAGEHEAD xmlns="http://webservice.entity.ssis.com">
                    <CGJLS>0</CGJLS>
                    <CODE>10</CODE>
                    <DQY xsi:nil="true"></DQY>
                    <FSSJ>20171130114249034</FSSJ>
                    <JLS></JLS>
                    <JYLCH xsi:nil="true"></JYLCH>
                    <MSG>处理成功!</MSG>
                    <MYJLS xsi:nil="true"></MYJLS>
                    <SBH>12</SBH>
                    <SBJLS>1</SBJLS>
                    <SID xsi:nil="true"></SID>
                </PACKAGEHEAD>
            </ns1:out>
        </ns1:xxba_BayxxbResponse>
    </soap:Body>
</soap:Envelope>

解析报文,设置命名空间,找到根节点

Document document  = DocumentHelper.parseText(resultXml);

DefaultXPath xpath = new DefaultXPath("//ns1:out");

xpath.setNamespaceURIs(Collections.singletonMap("ns1", "http://datarecord.webservice.ssis.com"));

Element element = (Element)xpath.selectSingleNode(document);

element.element("DATA").element("RECORD").element("CODE").getText();

使用最简单的获取节点方式,也可以循环报文信息,放到Map中。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值