Änderungen am ausgewählten Knoten spiegeln sich im Hauptdokument wider - htmlagilitypack

c# html-agility-pack local-variables selectsinglenode

Frage

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

Akzeptierte Antwort

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);


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum