Как выбрать что-то с пустым пространством имен с помощью 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-адрес, который вы хотите оставить пустым, вы привязываете префикс к пустому.

Другие вопросы по тегам