2011-01-07 176 views
2

我們將xml保存在數據庫的「文本」字段中。所以首先我檢查它是否存在任何xml,如果沒有,我創建一個新的xdocument,用必要的xml填充它。否則我只是添加新的元素。代碼如下所示:Linq to 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))); 

回答

2

相反的doc.Add(...,嘗試doc.Root.Add(...

加入一個新元素DOC意味着你基本上是試圖添加另一根元素,因此無效的XML異常。

在迴應評論:

我想你應該嘗試再doc.Root.Element("Posts").Add(...作爲將一個元素添加到Posts元素,而不是根源。

+0

您好,感謝您的幫助,現在它的工作,我現在得到的唯一的問題是,它就會在同一個「級別」的「帖子」 saven,但它應該像被保存在下面文章:,然後所有非常感謝 – Fore 2011-01-07 11:06:52