Konvertieren Sie den Knoten htmlagilitypack in htmlelement .net

.net html-agility-pack

Frage

Ich habe gerade htmlagilitypack benutzt, um alle Verbindungen als HTML-Code aus einem HTML-Dokument zu extrahieren, aber ich brauche das von meiner Funktion als htmlelement zurückgegeben

Dim Tags As HtmlNodeCollection = docNode.SelectNodes(strXpath)
  Dim ListResult As New List(Of HtmlElement)
  For Each Tag As HtmlNode In Tags
     ListResult.Add(Tag.Element)
 Next
Return Nothing

Wie kann ich das machen?

Akzeptierte Antwort

Ich vermute, dass die einzige Möglichkeit das zu tun ist, HtmlElement zu erstellen, und dann Attribute und inneren HTML von HtmlNode .

Hier ist eine Erweiterungsmethode dafür; Es akzeptiert einen Verweis auf eine System.Windows.Forms.HtmlDocument Instanz, um ein neues HtmlElement zu erstellen:

<System.Runtime.CompilerServices.Extension> _
Public Shared Function ToHtmlElement(node As HtmlNode, doc As System.Windows.Forms.HtmlDocument) As HtmlElement
    Dim element = doc.CreateElement(node.Name)
    For Each attribute As HtmlAttribute In node.Attributes
        element.SetAttribute(attribute.Name, attribute.Value)
    Next
    element.InnerHtml = node.InnerHtml

    Return element
End Function

Und um es zu benutzen, könnte dir das gefallen:

Dim browser As New WebBrowser()
browser.Navigate("about::blank")

Dim Tags As HtmlNodeCollection = docNode.SelectNodes(strXpath)
  Dim ListResult As New List(Of HtmlElement)
  For Each Tag As HtmlNode In Tags
     ListResult.Add(Tag.ToHtmlElement(browser.Document))
 Next
Return Nothing

Aber bitte beachten Sie, ich bin nicht zu vertraut mit VB.NET, ich habe zuerst Code-Beispiele für C # erstellt und dann in VB, NET übersetzt.




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