Ich wähle einen Knoten mit zum Beispiel
HtmlDocument temp_HdDocument = new HtmlDocument();
temp_HdDocument.LoadHtml(mysource);
var vrTempNewNode = temp_HdDocument.SelectSingleNode("//a"));
Ich ändere den Knoten auf diese Weise
foreach (HtmlNode node in vrTempNewNode.SelectNodes("*"))
{
node.Remove();
}
Jetzt, wenn ich Änderungen an vrTempNewNode
, wird es auch bei temp_HdDocument
reflektiert
Wie kann ich das verhindern? Ich nehme an, Select-Knoten erstellt nur ein Referenzobjekt, aber ich will es eine neue lokale Variable nicht ein Teil des Hauptdokuments sein
htmlagilitypack c # .net 4.5 wpf
Das ist das Standardverhalten, und es ist in den meisten Fällen sehr praktisch. Sie können HtmlNode.CopyFrom()
, um eine unabhängige Kopie des vorhandenen Knotens zu erstellen, die Sie dann ändern können, ohne das ursprüngliche HtmlDocument
ändern. Beispiel:
var a = temp_HdDocument.SelectSingleNode("//a"));
HtmlNode temp = HtmlNode.CreateNode("<a></a>");
temp.CopyFrom(a, false);