C# 为什么';是否为交错文本生成文本节点?
我正在尝试使用AngleSharp库解析一些HTML,到目前为止,这个库非常棒。我现在偶然发现了一个场景,我想解析以下HTML片段:C# 为什么';是否为交错文本生成文本节点?,c#,html,parsing,text,anglesharp,C#,Html,Parsing,Text,Anglesharp,我正在尝试使用AngleSharp库解析一些HTML,到目前为止,这个库非常棒。我现在偶然发现了一个场景,我想解析以下HTML片段: <a name="someLink" href="#someLink">Link 1</a> Some text that happens to be in between elements... <b>Some stuff in bold</b> Some more text <br> 某些文本恰好
<a name="someLink" href="#someLink">Link 1</a>
Some text that happens to be in between elements...
<b>Some stuff in bold</b>
Some more text
<br>
某些文本恰好位于元素之间。。。
一些粗体字的东西
更多的文字
当然,这段HTML包含封闭的父元素等,但这段HTML的解析元素的结果列表是:
- 兰蔻素
- HtmlBoldElement
- HTMLBREAKROWELENT
请注意,获取父级的完整文本内容并不是我想要做的事情,因为我实际上仍然需要元素的结构来知道什么是什么。这种行为实际上是DOM规范所期望的。您可能没有意识到这一点,但您已经回答了自己的问题:) 以下是您似乎不太正确的地方:元素!=节点。您要求元素,但您正在查找节点 类似
的标签:
foreach (var element in content.ChildNodes)
Console.WriteLine(element.GetType().Name);
现在输出为:
TextNode
HTMLanchoreElement
TextNode
HtmlBoldElement
TextNode
HTMLBREAKROWELENT
文本节点
似乎将浮动文本放入元素将是一个简单的答案。这不可能吗?我正在解析不受我控制的HTML,所以这是不可能的:)
foreach (var element in content.Children)
Console.WriteLine(element.GetType().Name);
foreach (var element in content.ChildNodes)
Console.WriteLine(element.GetType().Name);