Rimozione di un HtmlNode all'interno di un HtmlNode con HtmlAgilityPack

c# html html-agility-pack nodes removechild

Domanda

Come rimuovo il nodo numerico e il suo valore da casa?

Documento :

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

Codice:

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

Risultato:

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

Risultato richiesto

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

Ho cercato di usare:

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

e alcune altre combinazioni di questo ed eseguire in un "Nodo non è stato trovato nella raccolta" o non accadrà nulla. Selezionerà anche il numero più alto, non il numero all'interno del tag della casa.

Risposta accettata

Perché non rimuovi i nodi direttamente?

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

Ad ogni modo, il motivo per cui XPath sta selezionando tutti i nodi è perché devi dare un percorso relativo al nodo corrente:

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



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché