2008-10-28 2 views

ответ

1

Вам не нужно Schema правильный XML для использования XPath. Для не-правильно сформированного XML я думаю, что у вас есть два варианта:

  • сгенерируйте действительное дерево DOM из файла. Предложите сосать файл через JTidy или TagSoup. После этого вы можете использовать XPath как обычно.
  • сгенерируйте другую модель дерева, затем используйте настраиваемый навигатор для XPath Jaxen. (Jaxen позволяет использовать XPath на любой желаемой модели).
0

Хорошо, в первую очередь, «правильный xml» можно интерпретировать несколькими способами. Если вы имеете в виду «не-правильно сформированные» (отсутствующие угловые скобки, перекрывающиеся элементы и т. Д.), Никакая версия xpath, скорее всего, не сделает ничего полезного с этим. Вам будет лучше с некоторыми регулярными выражениями. Если ваш XML не очень хорошо сформирован, я надеюсь, что у вас есть ключ к тому, как он не будет хорошо сформирован, иначе вы не можете никуда с ним поработать.

Если вы на самом деле имеете в виду «недействительный», что означает, что он не проверяет схему или DTD, тогда вы можете использовать предикаты, которые сравниваются с функцией «local-name()». Например, если вы хотите, чтобы найти элемент «/ Foo/бар», игнорируя схемы, то ваш XPath будет выглядеть следующим образом:

/*[local-name()='foo']/*[local-name()='bar'] 
Смежные вопросы