是否有方法在C#中复制或制作XmlNodeList的另一个副本

本文关键字:XmlNodeList 另一个 副本 有方法 复制 是否 | 更新日期: 2023-09-27 18:24:56

我加载一个XmlDocument,然后在XmlNodeList实例中选择一些节点。如果我编辑这些节点中的任何一个,XmlDocument将被修改

XmlDocument xd = loadXml();
XmlNodeList xnl = xd.SelectNodes("/root/nodes");
foreach (XmlNode n in xnl)
{
    n.InnerText = "";
}

因此,我理解修改XmlNodeList-修改从中获取节点列表的XmlDocument。

是否有某种方法可以将节点列表创建到另一个XmlElement中的深度副本(我认为这正是我所需要的),这样当我修改这些节点时,它们将独立于复制它们的原始位置?

是否有方法在C#中复制或制作XmlNodeList的另一个副本

对xml cat进行蒙皮的方法不止一种。这只是一个。

    var xd = new XmlDocument();
    xd.LoadXml("<root><nodes><node>1</node><node>2</node></nodes></root>");
    var xnl = xd.SelectSingleNode("/root/nodes").Clone();
    foreach (XmlNode n in xnl)
    {
        n.InnerText = "x";
    }
    Console.Out.WriteLine(xd.OuterXml);
    Console.Out.WriteLine("--------------");
    Console.Out.WriteLine(xnl.OuterXml);

您需要使用.CloneNode创建自己的副本。MSDN有一个例子。