Mega Code Archive

 
Categories / C# / XML
 

Serialize List of Objects

using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.Serialization.Formatters.Soap; using System.Xml.Serialization; using System.Collections; [Serializable] public class Radio {     public bool hasTweeters;     public bool hasSubWoofers;     public double[] stationPresets;     [NonSerialized]     public string radioID = "002"; } [Serializable] public class Car {     public Radio theRadio = new Radio();     public bool isHatchBack; } [Serializable, XmlRoot(Namespace = "http://www.yoursite.com")] public class MyCar : Car {     public MyCar(bool SkyWorthy, bool SeaWorthy) {         canFly = SkyWorthy;         canSubmerge = SeaWorthy;     }     public MyCar() { }     [XmlAttribute]     public bool canFly;     [XmlAttribute]     public bool canSubmerge; } class Program {     static void Main(string[] args) {         MyCar jbc = new MyCar();         jbc.canFly = true;         jbc.canSubmerge = false;         jbc.theRadio.stationPresets = new double[] { 89.3, 105.1, 97.1 };         jbc.theRadio.hasTweeters = true;         BinaryFormatter binFormat = new BinaryFormatter();         Stream fStream = new FileStream("CarData.dat",FileMode.Create, FileAccess.Write, FileShare.None);         binFormat.Serialize(fStream, jbc);         fStream.Close();         fStream = File.OpenRead("CarData.dat");         MyCar carFromDisk =(MyCar)binFormat.Deserialize(fStream);         fStream.Close();         SoapFormatter soapForamt = new SoapFormatter();         fStream = new FileStream("CarData.soap",FileMode.Create, FileAccess.Write, FileShare.None);         soapForamt.Serialize(fStream, jbc);         fStream.Close();         XmlSerializer xmlForamt = new XmlSerializer(typeof(MyCar),new Type[] { typeof(Radio), typeof(Car) });         fStream = new FileStream("CarData.xml",FileMode.Create, FileAccess.Write, FileShare.None);         xmlForamt.Serialize(fStream, jbc);         fStream.Close();         ArrayList myCars = new ArrayList();         myCars.Add(new MyCar(true, true));         myCars.Add(new MyCar(true, false));         myCars.Add(new MyCar(false, true));         myCars.Add(new MyCar(false, false));         fStream = new FileStream("CarCollection.xml",FileMode.Create, FileAccess.Write, FileShare.None);         xmlForamt = new XmlSerializer(typeof(ArrayList),new Type[] { typeof(MyCar), typeof(Car), typeof(Radio) });         xmlForamt.Serialize(fStream, myCars);         fStream.Close();     } }