Linq to xml не может добавлять новые элементы - PullRequest
2 голосов
/ 07 января 2011

Мы сохраняем наш xml в текстовом поле в базе данных. Итак, сначала я проверяю, существует ли какой-либо xml, если нет, я создаю новый xdocument, заполняю его необходимым xml. иначе я просто добавлю новый элемент. Код выглядит так:

XDocument doc = null;
if (item.xmlString == null || item.xmlString == "")
                {
                    doc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), new XElement("DataTalk", new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"),
                        new XAttribute(XNamespace.Xmlns + "xsd", "http://www.w3.org/2001/XMLSchema"), new XElement("Posts", new XElement("TalkPost"))));

                }
                else
                {
                    doc = XDocument.Parse(item.xmlString);
                }

Это нормально работает для создания структуры, но затем возникает проблема, когда я хочу добавить новый TalkPost. Я получаю сообщение об ошибке, говоря неправильно структурированный документ. Следующий код при добавлении новых элементов:

doc.Add(new XElement("TalkPost", new XElement("PostType", newDialog.PostType), 
new XElement("User", newDialog.User), new XElement("Customer", newDialog.Customer),
new XElement("PostedDate", newDialog.PostDate), new XElement("Message", newDialog.Message)));

1 Ответ

2 голосов
/ 07 января 2011

Вместо doc.Add(..., попробуйте doc.Root.Add(...

Добавление другого элемента в документ означает, что вы по сути пытаетесь добавить другой корневой элемент, отсюда недопустимое исключение XML.

В ответна комментарий:

Я думаю, вам следует попробовать doc.Root.Element("Posts").Add(..., так как это добавит элемент к элементу Posts, а не к корню.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...