就在刚刚项目中用到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/
由于时间紧迫就先这样,日后修改格式。欢迎各位妹妹一起学习讨论,咱们面向对象编程!