Xml.Serialization, правильный способ добавления - PullRequest
2 голосов
/ 29 ноября 2010

Для моего приложения для телефона Windows 7 я сериализую свой объект и сохраняю его в items.xml.

Теперь, когда я хочу добавить больше элементов в мои 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();
                        }
                    }

Разное.

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

1 Ответ

0 голосов
/ 29 ноября 2010

Вот один из способов записи более одного объекта в 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));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...