Supprimer un HtmlNode à l'intérieur d'un HtmlNode avec le HtmlAgilityPack

c# html html-agility-pack nodes removechild

Question

Comment puis-je supprimer le nœud numérique ainsi que sa valeur de la maison?

Document :

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

Code:

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

Résultat:

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

Résultat requis

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

J'ai essayé d'utiliser:

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

et quelques autres combinaisons de cela et aboutissent à un "Nœud non trouvé dans la collection" ou rien ne se passera. Il sélectionnera également le numéro le plus haut, pas le numéro à l'intérieur de la balise maison.

Réponse acceptée

Pourquoi ne supprimez-vous pas les nœuds directement?

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

Quoi qu'il en soit, la raison pour laquelle votre XPath sélectionne tous les nœuds est qu'il vous faut donner un chemin relatif au nœud actuel:

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



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi