xmlns是XML Namespaces的缩写
普通的xml解析:
xml示例:
<result> <message> <title>Good</title> </message> <message> <title>Better</title> </message> <message> <title>Best</title> </message> </result>
dom4j:
Document resultDoc = null;
try {
resultDoc = DocumentHelper.parseText(result);
} catch (DocumentException e) {
e.printStackTrace();
}
Element rootEle = resultDoc.getRootElement();
List<Node> mesList = rootEle.selectNodes("//result/message");
带有xmlns的xml解析:
xml示例:
<result xmlns="http://www.xxx.com/xxxx/xxxx" > <message> <title>Good</title> </message> <message> <title>Better</title> </message> <message> <title>Best</title> </message> </result>
dom4j:
Document resultDoc = null;
try {
resultDoc = DocumentHelper.parseText(result);
} catch (DocumentException e) {
e.printStackTrace();
}
Element rootEle = resultDoc.getRootElement();
String nsUri = rootEle.getNamespaceURI();
Map nsMap = new HashMap();
nsMap.put("rootNs", nsUri);
XPath mesXpath = resultDoc.createXPath("//rootNs:result/rootNs:message");
mesXpath.setNamespaceURIs(nsMap);
List<Node> mesList = mesXpath.selectNodes(resultDoc);
当然,无论根节点有没有命名空间,第二种方式都适用。