Странное исключение из SgmlReader
Я использую SgmlReader для анализа файлов HTML на С#. Я использую пример кода, представленный на их веб-сайте:
using (reader = File.OpenText(fileName))
{
try
{
xmlDoc = fromHTML(reader);
}
catch(Exception ex)
{
return ReturnedCode.ErrorOpeningHTMLFile;
}
}
private XmlDocument fromHTML(TextReader reader)
{
Sgml.SgmlReader sgmlReader = new Sgml.SgmlReader();
sgmlReader.DocType = "HTML";
sgmlReader.WhitespaceHandling = WhitespaceHandling.All;
sgmlReader.CaseFolding = Sgml.CaseFolding.ToLower;
sgmlReader.InputStream = reader;
// create document
XmlDocument doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.Load(sgmlReader);
return doc;
}
Код работает долгое время без каких-либо проблем. Однако недавно он начал бросать следующее исключение вdoc.Load(sgmlReader)
линия:
Допустимое значение UTF32 находится в диапазоне от 0x000000 до 0x10ffff включительно и не должно включать суррогатные значения кодовой точки (0x00d800 ~ 0x00dfff).\r\nИмя параметра: utf32
Мне удалось сузить проблему до приведенного ниже содержимого HTML-файла. Если я попытаюсь проанализировать файл, содержащий приведенный ниже код, будет выдано исключение.
<html>
<br>�
</html>
Если я уберу амперсанд во второй строке, код будет работать нормально.
Любая идея, что здесь происходит и как я могу это исправить? Я не могу просто удалить все амперсанды в файлах.