Попытка использовать 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 не может знать об этом пространстве имен по умолчанию? Кроме того, почему это заботится?
А еще лучше, как я могу это исправить?
Спасибо за любое понимание.