AngleSharp结果经过html编码

时间:2018-10-26 10:12:46

标签: anglesharp

我使用的是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 :(得分:0)

这是官方HTML规范中定义的标准行为。 textarea标签将切换到新的解析状态,并且不会自动关闭。它需要遇到textarea结束标签才能被关闭。这种新的解析状态实际上会忽略所有保留字符(例如<),这会导致您看到序列化表示形式,并将其用作编码值。

所以问题不在于编码(这只是序列化表示形式),而是textarea没有关闭,这将把textarea中的所有(假定的?)孩子作为原始输入。

很不幸,在这里您无能为力-您将需要关闭文本区域。所有浏览器(因此带有规范的初始说明)都以相同的方式看到它-因此,这并不是AngleSharp独有的。

HTH!