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