Это не ошибка. INPUT рассматривается синтаксическим анализатором как «пустой» элемент (см., Например: HTMLAgilityPack не сохраняет оригинальные пустые теги для субъектов пустых элементов), и по умолчанию такие элементы отображаются без закрытия /.
Причины исторически связаны с HTML 3.2. В те времена INPUT не требовалось закрывать, хотя сегодня это похоже на ошибку.
Это исправит вашу проблему:
public void PossibleHtmlAgilityPackBug()
{
const string html = @"<input type=""text"" name=""shouldNotTrim"" />";
var doc = new HtmlDocument();
doc.OptionWriteEmptyNodes = true;
doc.LoadHtml(html);
Assert.That(doc.DocumentNode.InnerHtml, Is.EqualTo(html));
}
В качестве примечания: пакет agility HTML не всегда создает точный эквивалент HTML text , но всегда будет пытаться перестроить что-то, что будет визуализированным . путь. Браузеры без проблем поддерживают открытый ввод.