vb.net HtmlAgilityPack Inserisci una stringa dopo il div

.net html html-agility-pack vb.net

Domanda

Sto cercando di inserire alcuni dei miei html direttamente dopo la fine di un div. Questo div ha altri div all'interno di esso.

    Dim HtmlNode As HtmlNode = HtmlNode.CreateNode("<span class=""label"">Those were the friends</span>")
    Dim FriendDiv = htmldoc.DocumentNode.SelectSingleNode("//div[@class='profile_friends']")
    Dim NewHTML As HtmlNode = htmldoc.DocumentNode.InsertAfter(HtmlNode, FriendDiv)

Ogni volta che eseguo quel codice ottengo un'eccezione Node "<div class="profile_topfriends"></div>" was not found in the collection

Risposta accettata

Simile a XmlNode InsertAfter() , è necessario chiamare questo metodo sul genitore comune del nodo di riferimento e InsertAfter() nodo. Prova qualcosa del genere:

Dim NewHTML As HtmlNode = FriendDiv.ParentNode.InsertAfter(HtmlNode, FriendDiv)

Ha funzionato bene per me. Ecco un semplice test che ho fatto in C # (tradotto in VB):

Dim html = "<body><div></div></body>"
Dim doc As New HtmlDocument()
doc.LoadHtml(html)
Dim div = doc.DocumentNode.SelectSingleNode("//div")
Dim span = HtmlNode.CreateNode("<span class=""label"">Those were the friends</span>")
Dim newHtml = div.ParentNode.InsertAfter(span, div)
Console.WriteLine(XDocument.Parse(doc.DocumentNode.OuterHtml).ToString())

<span> appare dopo <div> in console.



Related

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é