AngleSharp результат HTML кодированный - PullRequest
0 голосов
/ 26 октября 2018

Я использую AngleSharp, когда я анализирую ввод html, я получаю результат из внешнего html следующим образом:

<p><textarea>one&lt;p&gt;two</textarea></p>

Вот мой код:

string input = "<body><p><textarea>one<p>two";
var parser = new HtmlParser();
var document = parser.Parse(input);
var htmlOutput = document.Body.OuterHtml;

Я ожидаю, что результат будет:

<p><textarea>one</textarea></p><p>two</p>

Любой может мне помочь !!

1 Ответ

0 голосов
/ 09 декабря 2018

Это стандартное поведение, определенное в официальной спецификации HTML.Тег textarea переключается в новое состояние анализа и не закрывается автоматически.Он должен встретить закрывающий тег textarea.Это новое состояние синтаксического анализа по существу игнорирует все зарезервированные символы (например, <), что приводит к представлению сериализации, которое вы видите, используя их кодированные значения.

Таким образом, проблема не в кодировке (это простопредставление сериализации), а точнее, из-за того, что текстовая область не закрылась, что теперь поместит все (предполагаемые?) дочерние элементы в текстовую область как необработанный ввод.

К сожалению, здесь вы ничего не можете сделать - вынужно будет закрыть текстовую область.Все браузеры (отсюда и начальное замечание со спецификацией) видят это одинаково - так что это не уникально для AngleSharp.

HTH!

...