Как выбрать что-то с пустым пространством имен с помощью Jaxen?
У меня есть следующий XML:
<config xmlns="http://www.someurl.com">
<product>
<brand>
<content />
</brand>
</product>
</config>
Я читаю это хорошо в JDOM.
Однако, когда я пытаюсь использовать Jaxen для захвата содержимого, я не могу ничего получить.
Вот пример того, что не работает:
XPath xpath = new JDOMXPath("config");
SimpleNamespaceContext namespaceContext = new SimpleNamespaceContext();
namespaceContext.addNamespace("", "http://www.someurl.com");
xpath.setNamespaceContext(namespaceContext);
assert xpath.selectNodes(document).size() > 0 : "should find more than 0";
Это утверждение всегда неверно.
Что я делаю неправильно?
1 ответ
Решение
Вы должны назначить префикс. Сделайте этот вызов addNamespace("hopfrog", "http://..."); Затем создайте XPath ("hopfrog:config");
Помните, что префиксы в XML не являются частью реальной модели данных. Реальная модель данных присваивает URL, возможно, пустой, каждому элементу и атрибуту. Вы можете использовать любой префикс, который вы хотите в XPath, если он привязан к нужному URL. Поскольку URL-адрес, который вы хотите оставить пустым, вы привязываете префикс к пустому.