Изменения в выбранном узле отражены в основном документе - htmlagilitypack

Я выбираю узел с, например,

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

1 ответ

Решение

Это поведение по умолчанию, и в большинстве случаев это очень удобно. Ты можешь использовать HtmlNode.CopyFrom() создать независимую копию существующего узла, которую затем можно изменить, не затрагивая оригинал HtmlDocument, например:

var a = temp_HdDocument.SelectSingleNode("//a"));
HtmlNode temp = HtmlNode.CreateNode("<a></a>");
temp.CopyFrom(a, false);
Другие вопросы по тегам