使用soap請求服務後返回xml格式的內容,使用DefaultXPath來解析獲取數據。
XPath用於在 XML 文檔中通過元素和屬性進行導航,並對元素和屬性進行遍歷,它可以方便開發者抓起文檔中需要的東西。
org.dom4j.Document doc = org.dom4j.DocumentHelper.parseText(result);
DefaultXPath xpath = new DefaultXPath("//ExecCmdReturn");
xpath.setNamespaceURIs(Collections.singletonMap("ns1",
"iptv"));
List list = xpath.selectNodes(doc);
Iterator iterator = list.iterator();
// System.out.println(list.size());
while (iterator.hasNext()) {
org.dom4j.Element resultElm = (org.dom4j.Element) iterator.next();
List<org.dom4j.Element> eList = resultElm.elements();//獲取ExecCmdReturn下面的所有子節點
for (int i = 0; i < eList.size(); i++) {
org.dom4j.Element e = eList.get(i);
String value = e.getStringValue();
System.out.println("name: "+e.getName()+" value: "+value);
if (e.getName().equalsIgnoreCase("Result")) {
Result = value;
}else if (e.getName().equalsIgnoreCase("ErrorDescription")) {
ErrorDescription = value;
}
}
}
1、DefaultXPath xpath = new DefaultXPath("//ExecCmdReturn");
填入的內容爲獲取該標籤下面的內容,如果下面還有子標籤,用resultElm.elements()獲取ExecCmdReturn下面的所有子節點
2、xpath.setNamespaceURIs(Collections.singletonMap("ns1", "iptv"));
改方法爲設置xml裏的命名空間,一般都是頭標籤裏的xmlns中ns1內容或ing內容。例:
Collections.singletonMap("ing","http://IngestAssetService.homed.ipanel.cn")
"ns1", "iptv"