如何向文档添加XElement,避免“结构不正确的文档”错误?

时间:2010-01-21 17:35:35

标签: c# .net xml linq-to-xml

        // Remove element with ID of 1
        var userIds = from user in document.Descendants("Id")
                       where user.Value == "1"
                       select user;

        userIds.Remove();

        SaveAndDisplay(document);

        // Add element back
        var newElement = new XElement("Id", "0", 
            new XElement("Balance", "3000"));
        document.Add(newElement);

        SaveAndDisplay(document);

添加元素后块是问题所在。当它到达添加时它表明:

  

此操作会创建一个   结构不正确的文件。

我犯了什么愚蠢的错误?

修改

是的,我的阅读时间为XDocument,而不是XElement。关于何时支持其中一方的任何建议?

2 个答案:

答案 0 :(得分:39)

看起来您正在尝试将新元素添加为文档根目录的子元素。如果是,那么您需要将Add语句更改为以下内容。

var newElement = new XElement("Id", "0", new XElement("Balanace", "3000"));
document.Root.Add(newElement);

直接添加到文档会添加另一个违反XML结构的根元素。

答案 1 :(得分:8)

您正在尝试添加这些对象不喜欢的新根元素。我假设document是一个XDocument?通过将其添加到根节点,将其放置在根节点内。使用:

document.Root.Add(newElement)document.FirstNode.Add(newElement)

相关问题