dom4j解析soap型消息xml

本文介绍了一种使用DOM4J和XPath解析复杂SOAP消息的方法,并提供了一个具体的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

就在刚刚项目中用到webservice的soap消息,在解析的时候异常头疼。

本人又是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:Header/><soap:Body>
<ns1:GetPersonal_jh1Response xmlns:ns1="http://bank.services.com">
 <ns1:out>
  <ns1:string>LTE=</ns1:string>
  <ns1:string>sumyu7W9uPbIy7v5sb7Qxc+i</ns1:string>
 </ns1:out>
</ns1:GetPersonal_jh1Response></soap:Body></soap:Envelope>

使用dom4j普通的解析方法是解不出来的。度娘了很多方法。找到这样一个帖子,现将帖子地址发出:http://www.iteye.com/problems/85921

感谢该贴作者给了我启示。

然后本人本着长征革命不怕苦的精神,度娘了一下上帖中用的使用到的方法xpath 。现将本人解析上述soap消息的代码贴出。希望各位看官不喜勿喷,对小白嘴下留情。感谢各位大婶!(另外csdn对代码的对齐格式怎么做,还请各位不吝赐教!)

import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.xpath.DefaultXPath;

public class test {

 public static void main(String[] args) {
  String b = "<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:Header/><soap:Body><ns1:GetPersonal_jh1Response xmlns:ns1=\"http://bank.services.applications.dykj.com\">" +
    "<ns1:out>"
    +"<ns1:string>LTE=</ns1:string>"
    +"<ns1:string>sumyu7W9uPbIy7v5sb7Qxc+i</ns1:string>"
    +"</ns1:out>"
    +"</ns1:GetPersonal_jh1Response></soap:Body></soap:Envelope>";
  try {
   Document doc = DocumentHelper.parseText(b);
   DefaultXPath xpath = new DefaultXPath("//ns1:string");
   xpath.setNamespaceURIs(Collections.singletonMap("ns1","http://bank.services.applications.dykj.com")); 

   List list = xpath.selectNodes(doc);   
   Iterator iterator = list.iterator(); 
   while (iterator.hasNext()) {   
       Element node = (Element) iterator.next(); 
       System.out.println(node.getText());   
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

另外把dom4j的基本知识的帖子发出来,方便各位看官可以方便查看。

地址:http://www.cnblogs.com/forlina/archive/2011/06/09/2076534.html 感谢该贴作者。

最后这是本人的第一篇帖子,本文用的jar包有dom4j、jaxen-1.1-beta-6.jar。下载dom4j的时候就有这两个jar,dom4j下载地址如下:http://www.oschina.net/p/dom4j/ 

由于时间紧迫就先这样,日后修改格式。欢迎各位妹妹一起学习讨论,咱们面向对象编程!


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值