临时将节点添加到XDocument

时间:2014-04-03 10:18:53

标签: c# linq-to-xml

我需要为XDocument创建一个临时根节点,但我需要在不破坏引用的情况下执行此操作。

所以应该仍然有用

XElement x = doc.Root.FirstNode;
// Inset magic here that adds the "MyTempRoot"
Console.WriteLine(x.Name); // This should still work

实施例

<elements>
    <item />
    <item />
    <item />
</elements>

<MyTempRoot>
    <elements>
        <item />
        <item />
        <item />
    </elements>
</MyTempRoot>

2 个答案:

答案 0 :(得分:1)

以下内容应该足够了

doc.Root.ReplaceWith(new XElement("MyTempRoot", doc.Root));

答案 1 :(得分:0)

想出办法

private void AddTempRoot(XDocument doc)
{
    XElement tempRoot= new XElement("MyTempRood");
    var elements = doc.Elements();
    foreach (var element in elements)
    {
        element.Remove();
        tempRoot.Add(element);
    }
    doc.Add(tempRoot);
}

private void RemoveTempRoot(XDocument doc)
{
    var tempRoot = doc.Root;
    tempRoot.Remove();
    var elements = tempRoot.Elements();
    foreach (var element in elements)
    {
        element.Remove();
        doc.Add(element);
    }
}