0

このコードは奇妙な例外をスローします。Node "<span class="OrganisationOut"></span>" was not found in the collectionしかし、スパンのouterHTMLをチェックすると、<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());
}
4

1 に答える 1

1

現在のノードの下ですべてのスパンを再帰的に取得しているため (これ//が XPATH での意味です)、spanの子でnodeはなく、孫の を取得する場合があります。

この場合、ご覧のとおり、呼び出しnode.RemoveChild(span)は失敗します。代わりにやりたいことはspan.ParentNode.RemoveChild(span).

于 2013-03-03T18:30:08.883 に答える