删除子引发异常

时间:2013-03-03 17:21:36

标签: c# xpath html-agility-pack

这段代码给我一个奇怪的例外。 Node "<span class="OrganisationOut"></span>" was not found in the collection但是当我检查span {em}的外部HTML时<span class="OrganisationOut">National Cheng Kung University</span>。为什么要尝试删除不同的跨度?

doc = web.Load(urlTeams);

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//tr[contains(@id,'Cell')]"))
{
    HtmlNode span = node.SelectSingleNode(".//span");
    lbResults2.Items.Add(span.InnerText);
    lbResults.Items.Add(node.RemoveChild(span).InnerText.Trim());
}

1 个答案:

答案 0 :(得分:1)

由于您在当前节点下递归获取所有跨度(这是//在XPATH中的含义),您可能会得到span不是node的子节点,但是一个大孩子。

在这种情况下,如您所见,呼叫node.RemoveChild(span)将失败。你想要做的是span.ParentNode.RemoveChild(span)