Разбирать искаженный XML - PullRequest
6 голосов
/ 15 июня 2009

Я пытаюсь загрузить часть (возможно) искаженного HTML-кода в объект XMLDocument, но происходит сбой с XMLExceptions ..., поскольку есть дополнительные открывающие / закрывающие теги и искаженные теги XML, такие как <img > вместо <img />

Как мне получить XML для анализа всех ошибок в данных? Есть ли какой-нибудь валидатор XML, который я могу применить перед анализом, чтобы исправить эти ошибки? Или обрабатывает ли синтаксический анализ исключения, что может быть проанализировано?

Ответы [ 6 ]

15 голосов
/ 15 июня 2009

Пакет HTML Agility Pack будет анализировать html, а не xhtml, и это довольно простительно. Объектная модель будет знакома, если вы использовали XmlDocument.

2 голосов
/ 15 июня 2009

Возможно, вы захотите проверить ответ на этот вопрос .

В принципе, где-то между .NET-портом Beautifulsoup и HTML-пакетом Agility Pack есть способ.

1 голос
/ 15 июня 2009

В зависимости от конкретных потребностей вы можете использовать HTML Tidy для очистки документа, а затем импортировать его с помощью объекта XMLDocument.

1 голос
/ 15 июня 2009

Маловероятно, что вы сможете создать XmlDocument с таким уровнем неправильной структуры. XmlDocument (насколько мне известно) требует, чтобы содержимое XML придерживалось правильного синтаксиса вложения и закрытия.

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

Если вы имеете дело только с HTML, есть HTML Agility Pack , который может служить вашим целям.

0 голосов
/ 15 июня 2009

Нельзя загрузить искаженный XML в XmlDocument.

Проверьте пакет гибкости HTML на CodePlex

0 голосов
/ 15 июня 2009

То, что вы пытаетесь сделать, очень сложно. HTML не может быть проанализирован с использованием синтаксического анализатора XML, поскольку XML является строгим, а HTML - нет. Если бы этот HTML-код соответствовал XHTML (HTML как XML), то синтаксический анализатор XML проанализировал бы HTML без проблем.

Возможно, вы захотите узнать, есть ли конвертеры HTML в XHTML, если вы действительно хотите использовать анализатор XML для HTML.

Другими словами, я еще не встречал синтаксический анализатор XML, который обрабатывает искаженный XML ... они не предназначены для принятия разметки, как HTML (и по уважительной причине, тоже :))

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