Linq to xml无法添加新元素

时间:2011-01-07 10:39:47

标签: xml linq-to-xml

我们将xml保存在数据库的“text”字段中。所以首先我检查它是否存在任何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 个答案:

答案 0 :(得分:2)

而不是doc.Add(...,请尝试doc.Root.Add(...

向doc添加另一个元素意味着您实际上是在尝试添加另一个根元素,因此无效的XML异常。

回应评论:

我认为您应该尝试doc.Root.Element("Posts").Add(...因为这会向Posts元素添加元素,而不是根。