Come posso ottenere una HtmlElementCollection da un WebBrowser WPF

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

Domanda

La mia vecchia applicazione WinForm utilizzava HtmlElementCollection per elaborare una pagina

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

In WebBrowser di WPF, ci sono diverse cose che sono diverse. Per esempio

this.webbrowser.Document non ha alcun metodo chiamato GetElementsByTagName

Pertanto il mio codice non è in grado di ottenere un HtmlElementCollection

Risposta accettata

È necessario aggiungere un riferimento a Microsoft.mshtml e quindi è necessario eseguire il cast del documento come mshtml.HTMLDocument . Dopo averlo fatto dovresti essere in grado di utilizzare il metodo getElementsByTagName()

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

 }

getElementsByTagName() restituisce mshtml.IHTMLElementCollection e ogni elemento è di tipo mshtml.IHTMLElement

MODIFICARE

Soluzione alternativa, se hai bisogno di usare WinForms WebBrowser puoi usarlo al posto di quello di WPF. Aggiungi riferimento a WindowsFormsIntegration e System.Windows.Forms , crea spazio dei nomi in XAML e utilizza un controllo browser diverso

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



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché