HtmlAgilityPackを使用してHtmlNode内のHtmlNodeを削除する

c# html html-agility-pack nodes removechild

質問

番号ノードとその値を家から削除するにはどうすればよいですか?

ドキュメント

<number>123456</number>
<house> <number> </number>Red</house>
<house> <number>12</number>Blue</house>
<number>345345</number>
etc...

コード:

private void getHouse(string houseHtml)
{
    HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();

    htmlDoc.Load(new System.IO.StringReader(houseHtml));

    foreach (HtmlAgilityPack.HtmlNode house in htmlDoc.DocumentNode.SelectNodes("//house"))
    {
        MessageBox.Show(house.InnerText);
    }
}

結果:

 Red
12Blue

必要な結果

Red
Blue

私は使用しようとしています:

house.RemoveChild(house.SelectSingleNode("//number"));

およびこれを組み合わせて「ノードがコレクションに見つかりませんでした」に実行されるか、何も起こりません。また、ハウスタグ内の数字ではなく、一番上の数字を選択します。

受け入れられた回答

なぜノードを直接削除しないのですか?

var numbers = htmlDoc.DocumentNode.SelectNodes("//house/number");
if (numbers != null) {
    foreach(var node in number) 
        node.Remove();
}

とにかく、XPathがすべてのノードを選択している理由は、現在のノードに相対的なパスを与える必要があるためです。

house.SelectSingleNode("//number"); // wrong
house.SelectSingleNode(".//number"); // right


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ