// 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?
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.Adding directly to the document adds another root element, which violates the XML structure.
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)
ordocument.FirstNode.Add(newElement)