Dom4j selectNodes(arg)不提供节点列表

我在java中使用DOM4j进行XML工作,我的xml是这样的:

   ......   .....   

然后,

 Listlist = document.selectNodes("/abcd/efg"); 

得到列表零的大小。 我觉得这是由于xml中指定的命名空间。 我尝试了很多,但没有成功。

XPath表达式中的未加前缀的元素名称是指不在命名空间中的元素 – 它们不考虑在文档上声明的“default” xmlns="..."命名空间。 您需要在XPath引擎中声明名称空间的前缀,然后在表达式中使用该前缀。 这是一个受DOM4J javadocs启发的例子:

 Map uris = new HashMap(); uris.put("pqr", "http://www.xyz.com/pqr"); XPath xpath = document.createXPath("/pqr:abcd/pqr:efg"); xpath.setNamespaceURIs(uris); List nodes = xpath.selectNodes(document); 

修改你的代码:

 Listlist = document.selectNodes("//abcd/efg");