vb.net HtmlAgilityPack Insertar cadena después de div

.net html html-agility-pack vb.net

Pregunta

Estoy tratando de insertar algunos de mis propios html directamente después del final de un div. Este div tiene otro div en su interior.

    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)

Cada vez que ejecuto ese código obtengo una excepción El Node "<div class="profile_topfriends"></div>" was not found in the collection

Respuesta aceptada

Similar a InsertAfter() XmlNode , debe llamar a este método en el padre común del nodo al que se hace referencia y para insertarlo. Intenta algo como esto:

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

Funcionó bien para mí. Aquí hay una prueba simple que hice en C # (traducido a 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())

El <span> aparece después de <div> en la consola.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué