using System; using System.IO; using System.Xml.Serialization; public class Serializer { public static void Main(string [] args) { Personnel personnel = CreatePersonnel(); XmlSerializer serializer = new XmlSerializer(typeof(Personnel)); using (FileStream stream = File.OpenWrite("Employees.xml")) { serializer.Serialize(stream, personnel); } } private static Personnel CreatePersonnel() { Personnel personnel = new Personnel(); personnel.Employees = new Employee [] {new Employee()}; personnel.Employees[0].FirstName = "Joe"; personnel.Employees[0].MiddleInitial = "M"; personnel.Employees[0].LastName = "Lee"; personnel.Employees[0].Addresses = new Address [] {new Address()}; personnel.Employees[0].Addresses[0].AddressType = AddressType.Home; personnel.Employees[0].Addresses[0].Street = new string [] {"999 Colluden"}; personnel.Employees[0].Addresses[0].City = "Vancouver"; personnel.Employees[0].Addresses[0].State = State.BC; personnel.Employees[0].Addresses[0].Zip = "V5V 4X7"; personnel.Employees[0].HireDate = new DateTime(2001,1,1); return personnel; } } [Serializable] public enum AddressType { Home, Office } [Serializable] public enum State { [XmlEnum(Name="British C")]BC, [XmlEnum(Name="Sask")]SK } [Serializable] public class Address { [XmlAttribute(AttributeName="type")] public AddressType AddressType; [XmlElement(ElementName="street")] public string[] Street; [XmlElement(ElementName="city")] public string City; [XmlElement(ElementName="state")] public State State; [XmlElement(ElementName="zip")] public string Zip; } [Serializable] public class TelephoneNumber { [XmlAttribute(AttributeName="type")] public AddressType AddressType; [XmlElement(ElementName="areacode")] public string AreaCode; [XmlElement(ElementName="exchange")] public string Exchange; [XmlElement(ElementName="number")] public string Number; } [Serializable] public class Employee { [XmlAttribute(AttributeName="firstname")] public string FirstName; [XmlAttribute(AttributeName="middleinitial")] public string MiddleInitial; [XmlAttribute(AttributeName="lastname")] public string LastName; [XmlArray(ElementName="addresses")] [XmlArrayItem(ElementName="address")] public Address [] Addresses; [XmlArray(ElementName="telephones")] [XmlArrayItem(ElementName="telephone")] public TelephoneNumber [] TelephoneNumbers; [XmlAttribute(AttributeName="hiredate")] public DateTime HireDate; } [Serializable] [XmlRoot(ElementName="personnel")] public class Personnel { [XmlElement(ElementName="employee")] public Employee [] Employees; }