vb.net HtmlAgilityPack Вставить строку после div

.net html html-agility-pack vb.net

Вопрос

Я пытаюсь вставить некоторые из своих собственных html непосредственно после окончания div. У этого div есть другой div внутри.

    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)

Каждый раз, когда я запускаю этот код, я получаю исключение. Node "<div class="profile_topfriends"></div>" was not found in the collection

Принятый ответ

Подобно XmlNode 's InsertAfter() , вы должны вызвать этот метод для общего родителя ссылочного узла и для вставленного узла. Попробуйте что-то вроде этого:

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

Работала хорошо для меня. Вот простой тест, который я сделал в C # (переведен на 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> появляется после <div> в консоли.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow