2011-01-07 9 views
2

xmlをデータベースの "text"フィールドに保存します。だから私はそれが任意の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(...の、ドキュメントに別の要素を追加すると、あなたは、本質的に別のルート要素、したがって、無効なXML例外を追加しようとしていることを意味doc.Root.Add(...

してみてください。コメントへの応答で

私はあなたではなく、ルートよりも、Posts要素に要素を追加します、そのようdoc.Root.Element("Posts").Add(...を試みるべきだと思います。

+0

こんにちは、助けていただきありがとうございます。私は今、唯一の問題は「投稿」と同じ「レベル」で洞察を得ていますが、投稿の下に保存する必要があります: the ありがとう – Fore

関連する問題