vb.net HtmlAgilityPack在div之后插入字符串

时间:2014-08-15 21:43:18

标签: html .net vb.net html-agility-pack

尝试在div结束后直接插入一些我自己的html。这个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

1 个答案:

答案 0 :(得分:3)

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>控制台之后。