не строгий XPath для Java - PullRequest
       21

не строгий XPath для Java

0 голосов
/ 28 октября 2008

знаете ли вы какой-нибудь строгий xpath для Java? (Я хочу, чтобы он не проверял dtd и схему), и было бы здорово, если бы он не заботился о правильном xml.

Ответы [ 2 ]

1 голос
/ 29 октября 2008

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

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

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

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

/*[local-name()='foo']/*[local-name()='bar']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...