Modifiche al nodo selezionato riflesse sul documento principale: htmlagilitypack

c# html-agility-pack local-variables selectsinglenode

Domanda

Per esempio sto selezionando un nodo

HtmlDocument temp_HdDocument = new HtmlDocument();

temp_HdDocument.LoadHtml(mysource);

var vrTempNewNode = temp_HdDocument.SelectSingleNode("//a"));

Cambio nodo in questo modo

foreach (HtmlNode node in vrTempNewNode.SelectNodes("*"))
{
    node.Remove();
}

Ora, quando vrTempNewNode qualsiasi modifica su vrTempNewNode , si riflette anche su temp_HdDocument

Come posso evitare che ciò accada? Suppongo che il nodo selezionato crei solo un oggetto di riferimento ma voglio che sia una nuova variabile locale non una parte del documento principale

htmlagilitypack c # .net 4.5 wpf

Risposta accettata

Questo è il comportamento predefinito, ed è molto utile nella maggior parte dei casi. È possibile utilizzare HtmlNode.CopyFrom() per creare una copia indipendente del nodo esistente che è possibile modificare senza influire HtmlDocument originale, ad esempio:

var a = temp_HdDocument.SelectSingleNode("//a"));
HtmlNode temp = HtmlNode.CreateNode("<a></a>");
temp.CopyFrom(a, false);


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é