Java XML SAX Обработка ошибок - PullRequest
       3

Java XML SAX Обработка ошибок

2 голосов
/ 20 августа 2010

Итак, скажем, у меня есть XML-файл, который выглядит следующим образом:

<foo>
 <bar></bar>
 <bar></bar>
 <bar></bar>
 ...
 <bar></bar>
</foo>

Моя цель состоит в том, чтобы проверять каждый тег bar на соответствие DTD.Для простоты, допустим, что для каждого узла стержня, который проходит проверку по DTD, программа выводит «true», а для каждого узла стержня, который выходит из строя, выводится «fail»

Используя SAX-анализатор, как бы я это реализовал?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 20 августа 2010

Используйте проверяющий синтаксический анализатор SAX и обязательно установите org.xml.sax.ErrorHandler в org.xml.sax.XMLReader. ErrorHandler - это интерфейс, который вы можете реализовать тремя способами:

  • предупреждение (исключение SAXParseException)
  • ошибка (исключение SAXParseException)
  • fatalError (исключение SAXParseException)

Если ваша реализация ErrorHandler выдает исключение из этих методов, синтаксический анализ прекратится. С другой стороны, вы можете поймать SAXParseException, сохранить его в коллекции и просто вернуться из методов ErrorHandler, и анализ будет продолжен. После завершения анализа вы можете проверить свою реализацию ErrorHandler на наличие сохраненных исключений.

SAXParseException содержит полезную информацию, такую ​​как номер столбца / строки, где произошла ошибка.

0 голосов
/ 20 августа 2010

Tricky, потому что (проверяющий) стандартный синтаксический анализатор XML остановится при первой ошибке проверки.XML-редактор eclipse отличается, он показывает все ошибки валидации, но не так-то просто извлечь его и использовать за пределами среды eclipse ...

Попробуйте: проанализируйте весь документ с неподтверждениемSAX Parser и передает каждый элемент bar второму проверяющему анализатору.Вам понадобится производная dtd для второго парсера, потому что он увидит корневой элемент с именем bar.Это должно дать результаты проверки для элементов бара.

...