convertire il nodo htmlagilitypack in htmlelement .net

.net html-agility-pack

Domanda

Ho appena usato htmlagilitypack per estrarre tutto il link come htmlnode da un documento html, ma ho bisogno di questo restituito dalla mia funzione come htmlelement

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

Come posso fare questo?

Risposta accettata

Sospetto che l'unico modo per farlo sia creare HtmlElement e quindi copiare gli attributi e il codice HTML interno da HtmlNode .

Ecco un metodo di estensione per questo; accetta un riferimento a un'istanza System.Windows.Forms.HtmlDocument per creare un nuovo HtmlElement :

<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

E per usarlo ti potrebbe piacere questo:

<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

Ma per favore nota, non sono troppo familiare con VB.NET, ho creato prima esempi di codice per C # e poi li ho tradotti in VB, NET.




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é