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