默认 XML 命名空间、JDOM 和 XPath
我想使用 JDOM 读取 XML 文件,然后使用 XPath 从 JDOM 文档中提取数据。它可以很好地创建 Document 对象,但是当我使用 XPath 查询 Document 以获取元素列表时,我什么也得不到。
我的 XML 文档具有在根元素中定义的默认命名空间。有趣的是,当我删除默认命名空间时,它成功运行XPath查询并返回我想要的元素。我还必须执行哪些操作才能使 XPath 查询返回结果?
XML:
<?xml version="1.0" encoding="UTF-8"?>
<collection xmlns="http://www.foo.com">
<dvd id="A">
<title>Lord of the Rings: The Fellowship of the Ring</title>
<length>178</length>
<actor>Ian Holm</actor>
<actor>Elijah Wood</actor>
<actor>Ian McKellen</actor>
</dvd>
<dvd id="B">
<title>The Matrix</title>
<length>136</length>
<actor>Keanu Reeves</actor>
<actor>Laurence Fishburne</actor>
</dvd>
</collection>
爪哇岛:
public static void main(String args[]) throws Exception {
SAXBuilder builder = new SAXBuilder();
Document d = builder.build("xpath.xml");
XPath xpath = XPath.newInstance("collection/dvd");
xpath.addNamespace(d.getRootElement().getNamespace());
System.out.println(xpath.selectNodes(d));
}