Cambios en el nodo seleccionado reflejados en el documento principal - htmlagilitypack

c# html-agility-pack local-variables selectsinglenode

Pregunta

Estoy seleccionando un nodo con por ejemplo

HtmlDocument temp_HdDocument = new HtmlDocument();

temp_HdDocument.LoadHtml(mysource);

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

Cambio nodo de esta manera

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

Ahora, cuando hago cambios en vrTempNewNode , también se refleja en temp_HdDocument

¿Cómo puedo evitar que esto suceda? Supongo que el nodo de selección simplemente crea un objeto de referencia, pero quiero que sea una nueva variable local que no sea parte del documento principal

htmlagilitypack c # .net 4.5 wpf

Respuesta aceptada

Ese es el comportamiento predeterminado, y es muy útil en la mayoría de los casos. Puede usar HtmlNode.CopyFrom() para crear una copia independiente del nodo existente que luego puede modificar sin afectar el documento HtmlDocument original, por ejemplo:

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


Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué