Modifications sur le noeud sélectionné reflétées sur le document principal - htmlagilitypack

c# html-agility-pack local-variables selectsinglenode

Question

Je sélectionne un noeud avec par exemple

HtmlDocument temp_HdDocument = new HtmlDocument();

temp_HdDocument.LoadHtml(mysource);

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

Je change de noeud de cette façon

HtmlDocument temp_HdDocument = new HtmlDocument();

temp_HdDocument.LoadHtml(mysource);

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

Maintenant, lorsque je fais des modifications sur vrTempNewNode il est également reflété à temp_HdDocument

Comment puis-je empêcher cela? Je suppose que select node crée simplement un objet de référence mais je veux que ce soit une nouvelle variable locale ne faisant pas partie du document principal

htmlagilitypack c # .net 4.5 wpf

Réponse acceptée

C'est le comportement par défaut, et c'est très pratique dans la plupart des cas. Vous pouvez utiliser HtmlNode.CopyFrom() pour créer une copie indépendante du noeud existant que vous pouvez ensuite modifier sans affecter le HtmlDocument origine, par exemple:

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



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