在 Xamarin Studio(Android 应用程序)中序列化/反序列化 List<>

Cic*_*ero 4 c# android xamarin

我正在尝试在 Android 应用程序中保存一些用户生成的列表。我想序列化为 XML 并在之后反序列化它。

但我不确定该怎么做,我使用的是 Xamarin Studio,因此用 C# 编写。

我要存储的是这个列表:

    foItems = new List<FoodItem> ();
        foItems.Add (new FoodItem () { FoodItemName = "Kål", FoodItemAmount = 352, FoodItemExpire = DateTime.Now });
        foItems.Add (new FoodItem () { FoodItemName = "Hakket Svinekød", FoodItemAmount = 8030, FoodItemExpire = DateTime.Now });
        foItems.Add (new FoodItem () { FoodItemName = "Peanuts", FoodItemAmount = 520, FoodItemExpire = DateTime.Now });
        foItems.Add (new FoodItem () { FoodItemName = "Molotov Cocktails", FoodItemAmount = 110, FoodItemExpire = DateTime.Now  });
        foItems.Add (new FoodItem () { FoodItemName = "Iceberg Salat", FoodItemAmount = 5400, FoodItemExpire = DateTime.Now });
Run Code Online (Sandbox Code Playgroud)

我需要一个带有我的列表 foItems 的简单序列化/反序列化示例。

Cic*_*ero 6

在 Xamarin 中序列化列表 - 使用 System.Xml.Serialization

例子:

        string filepath = "your file pathfile";
        list<your_type> yourlist;
        XmlSerializer serializer = new XmlSerializer(typeof(List<your_type>));//initialises the serialiser
        Stream writer = new FileStream(filepath, FileMode.Create);//initialises the writer

        serializer.Serialize(writer, yourlist);//Writes to the file
        writer.Close ();//Closes the writer
Run Code Online (Sandbox Code Playgroud)

使用 System.Xml.Serilization 在 Xamarin 中反序列化列表

例子:

        string filepath = "your file pathfile";

        XmlSerializer serializer = new XmlSerializer(typeof(List<your_type>));//initialises the serialiser
        Stream reader = new FileStream (filepath, FileMode.Open); //Initialises the reader
        List<your_type> deserializedList; 

        deserializedList = (List<your_type>)serializer.Deserialize (reader); //reads from the xml file and inserts it in this variable
        reader.Close (); //closes the reader

        return deserializedList;
Run Code Online (Sandbox Code Playgroud)