我正在尝试使用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吗?
答案 0 :(得分:1)
要获取DOM中的文本节点,QI(C#中的类型转换),HtmlElement.DomElement
的父元素(Windows窗体中的mshtml.IHTMLDOMNode
)。
然后,您可以通过IHTMLDOMNode.childNodes
获取直接子节点。然后,您枚举IHTMLDOMNode.childNodes
集合,查找类型为3(文本)的节点。如果要在子元素中查找文本节点,请对类型1子节点重复此操作。