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

被折叠的 条评论
为什么被折叠?



