Подтвердить что ты не робот

Как добавить 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. Любые советы о том, когда следует отдавать предпочтение одному или другому?

4b9b3361

Ответ 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)