AngleSharp文本元素解析

时间:2017-12-02 15:40:07

标签: c# html-parsing anglesharp

我正在使用AngleSharp开发有限的浏览器功能。它解析HTML的方式让我有点困惑。例如,以下“div”的内容被解析为一个BR子元素和一个带有文本“te st”的TextContent属性。因此,无法在文本中找到BR元素的位置。

<div>te<br />st</div>

我认为如果DIV有3个子组件会更好。第一个是内容为“te”的文本元素,然后是另一个内容为“st”的文本元素的BR元素。

有没有替代解决方案?

1 个答案:

答案 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元素,文本节点)。希望这有帮助!