代码之家  ›  专栏  ›  技术社区  ›  Finglas

如何将Xelement添加到文档中,以避免“结构不正确的文档”错误?

  •  21
  • Finglas  · 技术社区  · 15 年前
            // 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 回复  |  直到 12 年前
        1
  •  39
  •   Steve Guidi    15 年前

    看起来您正试图添加一个新元素作为文档根的子元素。如果是这样,那么你需要改变你的 Add 陈述如下。

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

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

        2
  •  8
  •   Patrick Karcher    15 年前

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

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