Как выбрать что-то с пустым пространством имен с помощью Jaxen? - PullRequest
1 голос
/ 29 января 2010

У меня есть следующий 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 Ответ

1 голос
/ 29 января 2010

Вы должны назначить префикс. Сделайте этот вызов addNamespace ("hopfrog", "http: // ..."); Затем сделайте XPath ("hopfrog: config");

Имейте в виду, что префиксы в XML не являются частью реальной модели данных. Реальная модель данных присваивает URL, возможно, пустой, каждому элементу и атрибуту. Вы можете использовать любой префикс, который вы хотите в XPath, если он привязан к нужному URL. Поскольку URL-адрес, который вы хотите оставить пустым, вы привязываете префикс к пустому.

...