How do I add an XElement to a document, avoiding the “incorrectly structured document” error?

一笑奈何 提交于 2019-12-23 06:48:54

问题


        // 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);

The add element back block is the problem. As when it gets to the add it states:

This operation would create an incorrectly structured document.

What stupid mistake am I making?

Edit:

Yes, I was reading as an XDocument, not XElement. Any advice on when to favour one or the other?


回答1:


It looks like you are trying to add a new element as a child of your document's root. If so, then you need to change your Add statement to the following.

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

Adding directly to the document adds another root element, which violates the XML structure.




回答2:


You're effectively trying to add a new root element, which these objects don't like. I assume document is an XDocument? Place it further inside the root node, by adding it to the root node. Use:

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



来源:https://stackoverflow.com/questions/2111424/how-do-i-add-an-xelement-to-a-document-avoiding-the-incorrectly-structured-doc

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!