2010-11-29 15 views
1

Für meine Windows 7-Telefonanwendung serialisiere ich mein Objekt und speichere es unter items.xml.Xml.Serialization, Korrekter Weg zum Anfügen

Jetzt, wenn ich mehr Artikel zu meiner items.xml hinzufügen möchte, habe ich ein Problem co's writer.WriteEndElement(); wurde bereits geschrieben. jetzt, was ich tun kann, ist lesen Sie alle Elemente, die in items.xml sind, speichern Sie es in einer Liste und überschreiben Sie dann die aktuelle items.xml hart dies setzt starke Nutzung auf dem Telefon, so bezweifle ich, dass es die richtige Art und Weise, aber es ist anständig Umgehen Sie das und hängen Sie die Datei anständig an? Vielen Dank !

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

Sind Sie XMLSerializer oder XMLWriter verwenden? –

+0

beides? Ich implementierte die IXmlSerializable und in der öffentlichen void WriteXml (System.Xml.XmlWriter Writer) { writer.WriteElementString ("Name", ToDoName); writer.WriteElementString ("Beschreibung", ToDoDescription); writer.WriteElementString ("priority", ToDoPriortiySelection.ToString()); } – Syneryx

Antwort

0

Hier ist eine Möglichkeit, mehr als ein Objekt zu einem XMLSerializer zu schreiben:

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

Und deserialisieren:

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