Как добавить XElement в документ, избегая ошибки "неправильно структурированного документа"?
// 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);
Проблема заключается в обратном блоке добавления элемента. Как и при добавлении, он указывает:
Эта операция создаст неправильно структурированный документ.
Какую глупую ошибку я делаю?
Edit:
Да, я читал как XDocument
, а не XElement
. Любые советы о том, когда следует отдавать предпочтение одному или другому?
Ответы
Ответ 1
Похоже, вы пытаетесь добавить новый элемент в качестве дочернего элемента вашего корня документа. Если это так, вам нужно изменить инструкцию Add
на следующее.
var newElement = new XElement("Id", "0", new XElement("Balanace", "3000"));
document.Root.Add(newElement);
Добавление непосредственно в документ добавляет еще один корневой элемент, который нарушает структуру XML.
Ответ 2
Фактически вы пытаетесь добавить новый корневой элемент, который не нравится этим объектам. Я предполагаю, что document
является XDocument? Поместите его далее в корневой каталог node, добавив его в корневой каталог node. Использование:
document.Root.Add(newElement)
или
document.FirstNode.Add(newElement)