使用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"