Проверка и исправление XML - PullRequest
       25

Проверка и исправление XML

2 голосов
/ 01 октября 2008

Есть ли способ получить более полезную информацию об ошибке проверки? XmlSchemaException предоставляет номер строки и позицию ошибки, которая не имеет большого смысла для меня. В конце концов, XML-документ не о его временном текстовом представлении. Я хотел бы получить перечисляемую ошибку (или код ошибки), указывающую, что в случае ошибки, имя узла (или xpath), чтобы найти источник проблемы, чтобы, возможно, я мог попытаться исправить ее.

Редактировать: я говорю о допустимых XML-документах - просто не подходит для конкретной схемы!

Ответы [ 5 ]

2 голосов
/ 01 октября 2008

По моему опыту, вам повезло получить номер строки и позицию разбора.

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

Вы можете рассмотреть проверку через DTD, которая может иногда выдавать немного более интересные ошибки, однако в проекте, над которым я сейчас работаю, мы проверяем с использованием XSLT. Преобразование проверяет синтаксис и сообщает об ошибках как выведенный текст преобразования. Я хотел бы рассмотреть этот маршрут, если вы хотите более дружественную проверку ошибок. Для нас пустой вывод означает отсутствие ошибок, в противном случае мы получим некоторые подробности обработки XSLT о том, что это за ошибка и где.

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

Кажется, это нелегкая задача. Ответ Роберта Россни наиболее близок к программному решению моей проблемы, поэтому я пока приму его Я продолжу использовать решение xsl. Любой, кто найдет лучший способ устранения ошибок проверки, может ответить на эту тему.

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

Вы можете сделать это, вроде как, настроив XmlReader, чьи XmlReaderSettings содержат схему, а затем используя ее для чтения входного потока узел за узлом. Вы можете отслеживать последний прочитанный узел и иметь довольно хорошее представление о том, где вы находитесь в документе, когда происходит ошибка проверки.

Я думаю, что если вы попробуете это упражнение, вы обнаружите, что существует много ошибок проверки (например, отсутствует обязательный элемент), где концепция узла ошибок не имеет большого смысла. Да, родительский элемент, очевидно, является причиной ошибки в этом случае, но что действительно вызвало ошибку, так это то, что читатель обнаружил конечный тег, даже не увидев требуемый элемент, поэтому линия ошибки и позиция указывают на конечный тег. *

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

лично я не уверен, как получить более подробную ошибку, обычно, если вы откроете документ и перейдете в указанное место, вы легко сможете найти ошибку.

Если код не может проанализировать файл как действительный XML, ему довольно сложно указать XPATH или другую названную деталь XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...