如何从WPF WebBrowser获取HtmlElementCollection

时间:2015-04-30 16:18:30

标签: c# wpf c#-4.0 html-agility-pack htmlelements

我的旧WinForm应用程序使用HtmlElementCollection处理页面

HtmlElementCollection hec = this.webbrowser.Document.GetElementsByTagName("input");

在WPF WebBrowser中,有几个不同的东西。例如

this.webbrowser.Document 没有任何名为 GetElementsByTagName

的方法

因此我的代码无法获取HtmlElementCollection

1 个答案:

答案 0 :(得分:6)

您需要添加对Microsoft.mshtml的引用,然后您需要将文档转换为mshtml.HTMLDocument。完成后,您应该可以使用getElementsByTagName()方法

 var document = webBrowser.Document as mshtml.HTMLDocument;
 var inputs = document.getElementsByTagName("input");
 foreach (mshtml.IHTMLElement element in inputs)
 {

 }

getElementsByTagName()返回mshtml.IHTMLElementCollection,每个项目都是mshtml.IHTMLElement类型

修改

替代解决方案,如果您需要使用WinForms WebBrowser,您可以使用它而不是WPF。添加对WindowsFormsIntegrationSystem.Windows.Forms的引用,在XAML中创建命名空间并使用不同的浏览器控件

<Window ...
    xmlns:winforms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms">
    <WindowsFormsHost>
        <winforms:WebBrowser x:Name="webBrowser"/>
    </WindowsFormsHost>
</Window>