我正在使用AngleSharp开发有限的浏览器功能。它解析HTML的方式让我有点困惑。例如,以下“div”的内容被解析为一个BR子元素和一个带有文本“te st”的TextContent属性。因此,无法在文本中找到BR元素的位置。
<div>te<br />st</div>
我认为如果DIV有3个子组件会更好。第一个是内容为“te”的文本元素,然后是另一个内容为“st”的文本元素的BR元素。
有没有替代解决方案?
答案 0 :(得分:2)
实际上,它会产生预期的结果。 AngleSharp的DOM(和HTML5兼容的解析器)根据W3C规范工作。因此,与常青浏览器相比,应该没有什么惊喜。
var text = "<div>te<br/>st</div>";
var context = BrowsingContext.New();
var document = context.OpenAsync(m => m.Content(text)).Result;
var div = document.Body.QuerySelector("div");
Console.WriteLine(div.ChildNodes.Length);
foreach (var child in div.ChildNodes)
{
Console.WriteLine(child.NodeName);
Console.WriteLine(child.TextContent);
}
输出
3
#text
te
BR
#text
st
因此我们有(文本节点,BR元素,文本节点)。希望这有帮助!