所選節點上的更改反映在主文檔 - htmlagilitypack上

c# html-agility-pack local-variables selectsinglenode

我正在選擇一個節點

HtmlDocument temp_HdDocument = new HtmlDocument();

temp_HdDocument.LoadHtml(mysource);

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

我以這種方式改變節點

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

現在,當我對vrTempNewNode進行任何更改時,它也會反映在temp_HdDocument

我怎樣才能防止這種情況發生?我想select節點只是創建一個引用對象,但我希望它是一個新的局部變量而不是主文檔的一部分

htmlagilitypack c#.net 4.5 wpf

一般承認的答案

這是默認行為,在大多數情況下它非常方便。您可以使用HtmlNode.CopyFrom()創建現有節點的獨立副本,然後可以在不影響原始HtmlDocument情況下修改該節點,例如:

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


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow