Изменения в выбранном узле отражены в основном документе - 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);