1

我正在选择一个节点,例如

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

我怎样才能防止这种情况发生?我想选择节点只是创建一个引用对象,但我希望它是一个新的局部变量,而不是主文档的一部分

htmlagilitypack c# .net 4.5 wpf

4

1 回答 1

2

这是默认行为,在大多数情况下非常方便。您可以使用HtmlNode.CopyFrom()创建现有节点的独立副本,然后您可以在不影响原始节点的情况下对其进行修改HtmlDocument,例如:

var a = temp_HdDocument.SelectSingleNode("//a"));
HtmlNode temp = HtmlNode.CreateNode("<a></a>");
temp.CopyFrom(a, false);
于 2014-09-06T13:03:15.323 回答