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");