c# - AngleSharp 文本元素解析

标签 c# html-parsing anglesharp

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

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

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

是否有任何替代解决方案?

最佳答案

实际上,它会产生预期的结果。 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 元素,文本节点)。希望这对您有所帮助!

关于c# - AngleSharp 文本元素解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47609539/

相关文章:

c# - OpenXML、SAX 和简单地读取 Xlsx 文件

c# - 如何提高这些 linq 语句的可读性?

HTML5 : W3C vs WHATWG. 哪个规范最权威?

c# - 错误 "Non-generic method"IParentNode.QuerySelector(字符串) "cannot be used with type arguments. "

c# - 在 AngleSharp 中,如何使用字符串创建 DOM 元素?

c# - datetime.now 仅在服务器上延迟 10 小时,在本地机器上设置正确

c# - 从 Entity Framework 中的实体获取鉴别器值

html - 是否有现有或正在设计的并行 HTML 解析器?

c# - 从 HTML 格式的电子邮件中解析文本

c# - 使用 Anglesharp 从 html 字符串中获取列表 <li> 标签的集合