我使用的是AngleSharp,当我解析html输入时,我从外部html得到了这样的结果:
<p><textarea>one<p>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>
任何人都可以帮助我!
答案 0 :(得分:0)
这是官方HTML规范中定义的标准行为。 textarea
标签将切换到新的解析状态,并且不会自动关闭。它需要遇到textarea
结束标签才能被关闭。这种新的解析状态实际上会忽略所有保留字符(例如<
),这会导致您看到序列化表示形式,并将其用作编码值。
所以问题不在于编码(这只是序列化表示形式),而是textarea没有关闭,这将把textarea中的所有(假定的?)孩子作为原始输入。
很不幸,在这里您无能为力-您将需要关闭文本区域。所有浏览器(因此带有规范的初始说明)都以相同的方式看到它-因此,这并不是AngleSharp独有的。
HTH!