尝试将 XPath 与具有为根节点声明的默认命名空间的 XML 文件一起使用。
示例代码:
final SAXBuilder builder = new SAXBuilder();
final Document document = builder.build(originalFile);
final XPathFactory xFactory = XPathFactory.instance();
final String expression = String.format("//section[@label='%s']/section/section", LABEL);
final XPathExpression<Element> sectionExpression = xFactory.compile(expression, Filters.element());
final List<Element> sections = sectionExpression.evaluate(document);
部分为空。
XML 的片段
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project xmlns="http://www.stellent.com/sitestudio/Project/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.stellent.com/sitestudio/Project/ http://www.stellent.com/sitestudio/ss_project_schema.xsd">
<section label="Index">
<section label="xyz">
<section label="child">
...
</section>
</section>
</section>
</project>
删除xmlns="http://www.stellent.com/sitestudio/Project/"
作品但不是解决方案!
为什么 XPath 不能知道这个默认命名空间?还有,为什么在乎?
更好的是,我一般如何解决这个问题?
感谢您的任何见解。