paip.dom4j中 selectSingleNode 或selectNodes获取不到节点的原因总结
----作者Attilax , 1466519819@qq.com---
可能是因为XML文件带有命名空间.比如
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
因为dom4j不能识别带命名空间的节点,所以在读取带命名空间的XML时,要在每个节点前加上命名空间,方法如下例子:
Document doct=reader.read(xmlFile);
HashMap nsMap=new HashMap();
nsMap.put("ns","http://java.sun.com/xml/ns/jbi"); //加入命名空间
//获取子节点
XPath xsub=doct.createXPath("//ns:title");
xsub.setNamespaceURIs(nsMap);
Element element = (Element) xsub.selectSingleNode(doct);
参考
dom4j含xmlns(命名空间)调用selectNodes为空问题 - mochouxiyan的专栏 - 博客频道 - CSDN_NET.htm
上面就是运用dom4j解析带命名空间的xml文件的节点的例子,只要给XPath设置默认的命名空间就行了