1

我正在尝试使用 C# 遍历 WebBrowser 控件的 DOM,并对每个 HtmlElement 执行一些处理。(我同时对 DOM 进行了一些转换,但对于本次讨论,假设我试图通过递归遍历每个节点来展平 DOM)

当我遇到类似的事情时:

<p>Text with a <a href="http://www.example.com/">link</a> in the middle of it </p>

我找到了 P 标记的 HtmlElement(其中包含预期的 InnerText)和对应于标记 A 的子 HtmlElement 节点。A 标记的 HtmlElement 包含预期的内部文本。

但我找不到任何与 A 标签前后的文本相关的结构或属性。

除了将 P 标签的 InnerHtml 属性与 A 标签的 OuterHtml 属性进行比较的可怕技巧之外,有没有办法在 A 标签的文本之前和之后找到文本?

还是有另一种方式来遍历 IE DOM?

4

1 回答 1

1

为了在 DOM 中获取文本节点,QI(C# 中的一种类型HtmlElement.DomElement转换)是mshtml.IHTMLDOMNode.

然后你可以通过IHTMLDOMNode.childNodes. 然后枚举IHTMLDOMNode.childNodes集合,查找类型为 3(文本)的节点。如果您还想在子元素中查找文本节点,请对类型 1 子节点重复此操作。

于 2013-04-05T23:35:29.420 回答