2010-11-29 99 views
1

对于我的Windows 7手机应用程序,我序列化我的对象并将其保存到items.xmlXml.Serialization,正确的追加方法

现在,当我想添加更多项目到我的items.xml我有一个问题co的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(); 
         } 
        } 

Misc。

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

您正在使用的XMLSerializer或XMLWriter的? – 2010-11-29 17:05:33

回答

0

这里是写多个对象到XMLSerializer一种方法:

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); 
} 

和反序列化:

using (XMLSerializer xml = new XMLSerializer(typeof(List<object>))) 
{ 
    List<Object> myobjects = xml.Deserialize(File.OpenRead(filename)); 
}