Устойчивый к ошибкам XML-ридер - PullRequest
3 голосов
/ 02 ноября 2010

У кого-нибудь есть / делают / продают устойчивое к ошибкам средство чтения XML для .NET?

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

Итак, есть ли у кого-нибудь компонент, который может восстанавливать и обрабатывать распространенные ошибки в файлах XML?

Ответы [ 5 ]

13 голосов
/ 02 ноября 2010

Именно потому, что реальный мир несовершенен, так широко используется XML. Какова будет функциональная спецификация для устойчивого к ошибкам синтаксического анализатора XML? Это открытая проблема. Достаточно сложно проанализировать все варианты правильно сформированного XML, не пытаясь угадать все возможные ошибки.

[... ждет понижения.]

3 голосов
/ 02 ноября 2010

Сначала запустите XML через Красивый суп .Это очистит ваш XML от ошибок, поэтому он правильно анализирует

3 голосов
/ 02 ноября 2010

Посмотрите вокруг HTML Parser, потому что HTML почти xml

2 голосов
/ 02 ноября 2010

Для конкретного случая RSS-канала и конкретного случая отдельных поврежденных записей элемента можно использовать XmlTextReader , чтобы вручную прочитать каждый элемент отдельно, обрабатывая исключение XmlException для недопустимых элементов. Когда возникает исключение, вам нужно будет использовать новый экземпляр Reader, так как оригинальный Reader находится внутри. Вам по-прежнему нужно будет иметь действительные теги <item> и </item> для идентификации каждого элемента, но вы сможете восстановить поврежденные данные в каждом элементе.

1 голос
/ 15 сентября 2017

да, я знаю, что это старый вопрос, но недавно я искал толерантный анализатор xml и обнаружил следующее: XmlParser .

Полностью разработанный XML-синтаксический анализатор в стиле Рослина без зависимостей и простой языковой сервис Visual Studio XML.

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

Вы можете добавить Nugets в свой проект.Я попробовал этот парсер, и он может читать любые файлы XML.

...