Wie kann ich eine HtmlElementCollection von einem WPF-Webbrowser abrufen?

c# c#-4.0 html-agility-pack htmlelements wpf

Frage

Meine alte WinForm-Anwendung hat HtmlElementCollection zum Verarbeiten einer Seite verwendet

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

In WPF WebBrowser gibt es verschiedene Dinge, die sich unterscheiden. Beispielsweise

this.webbrowser.Document hat keine Methode namens GetElementsByTagName

Daher kann mein Code keine HtmlElementCollection abrufen

Akzeptierte Antwort

Sie müssen einen Verweis auf Microsoft.mshtml hinzufügen und dann müssen Sie das Dokument als mshtml.HTMLDocument . Nachdem Sie das getan haben, sollten Sie die Methode getElementsByTagName() verwenden können

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

 }

getElementsByTagName() gibt mshtml.IHTMLElementCollection und jedes Element mshtml.IHTMLElement Typ mshtml.IHTMLElement

BEARBEITEN

Alternative Lösung, wenn Sie WinForms WebBrowser , können Sie anstelle des WPF einen verwenden. Fügen Sie einen Verweis auf WindowsFormsIntegration und System.Windows.Forms , erstellen Sie einen Namespace in XAML und verwenden Sie eine andere Browsersteuerung

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


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum