走一个WebBrowser控件DOM - 带有子元素和文本的元素

时间:2013-04-05 22:30:26

标签: c# dom webbrowser-control

我正在尝试使用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标签前后的文本相关的任何结构或属性。

有没有办法找到A标签文本之前和之后的文本,而不是将P标签的InnerHtml属性与A标签的OuterHtml属性进行比较的可怕黑客?

或者还有另一种方法可以走IE DOM吗?

1 个答案:

答案 0 :(得分:1)

要获取DOM中的文本节点,QI(C#中的类型转换),HtmlElement.DomElement的父元素(Windows窗体中的mshtml.IHTMLDOMNode)。

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