2010-11-29 6 views
1

私のWindows 7の電話アプリケーションでは、オブジェクトをシリアル化してitems.xmlに保存します。Xml.Serialization、正しい方法を追加する

ここでitems.xmlに他のアイテムを追加したい場合は、すでにwriter.WriteEndElement(); が書かれている問題があります。 今、私ができることはitems.xmlにあるすべての項目を読み込んでリストに保存し、現在のitems.xmlを上書きします。これは厳しい使い方です。正しい方法を疑っていますが、これを回避してファイルをうっかり追加しますか?ありがとう!

using (var isfs = new IsolatedStorageFileStream(@"items.xml", FileMode.Append, store)) 
        { 
         XmlWriterSettings settings = new XmlWriterSettings(); 
         settings.Indent = true; 
         using (var writer = XmlWriter.Create(isfs, settings)) 
         { 
          writer.WriteStartElement("ToDoItem"); 
          item.WriteXml(writer); 
          writer.WriteEndElement(); 
          writer.Close(); 
         } 
        } 

その他

List<Object> myobjects = new List<Object>({myObject1, myObject2 }); // IEnumerable Constructor 

using (XMLSerializer xml = new XMLSerializer(typeof(List<Object>))) 
{ 
    // write them to the file 
    xml.Serialize(File.OpenWrite(filename), myobjects); 
} 

そしてデシリアライズする:ここで

[XmlRoot("ToDoItem")] 
    public class ToDoItem : IXmlSerializable{ 
    ... 
} 
+0

あなたはのXmlSerializerたりするXMLWriterを使用していますか? –

+0

?私はIXmlSerializableとPublic void WriteXml(System.Xml.XmlWriterライター)を暗示した。 { writer.WriteElementString( "name"、ToDoName); writer.WriteElementString( "description"、ToDoDescription); writer.WriteElementString( "priortiy"、ToDoPriortiySelection.ToString()); } – Syneryx

答えて

0

XMLSerializerに複数のオブジェクトを書き込むための一つの方法である

using (XMLSerializer xml = new XMLSerializer(typeof(List<object>))) 
{ 
    List<Object> myobjects = xml.Deserialize(File.OpenRead(filename)); 
} 
関連する問題