.Net下的XML序列化
来自:
http://billchen.cnblogs.com/archive/2005/08/27/223992.aspx
XML序列化可以让你使用class-friendly的方式操作XML。我们可以方便的将某个类序列化成XML字符串或文件,这里是一个例子。
Address类:
 [Serializable]
 [Serializable]
 public class Address
    public class Address
 {
    {
 public Address(){}
        public Address(){}


 public string Street
        public string Street
 {
        {
 get { return street; }
            get { return street; }
 set { street = value; }
            set { street = value; }
 }private string street;
        }private string street;

 public string City
        public string City
 {
        {
 get { return city; }
            get { return city; }
 set { city = value; }
            set { city = value; }
 }private string city;
        }private string city;

 public string State
        public string State
 {
        {
 get { return state; }
            get { return state; }
 set { state = value; }
            set { state = value; }
 }private string state;
        }private string state;
 }
    }
Customer类:
 [Serializable]
    [Serializable]
 public class Customer
    public class Customer
 {
    {
 public Customer(){}
        public Customer(){}

 public string Name
        public string Name
 {
        {
 get { return name; }
            get { return name; }
 set { name = value; }
            set { name = value; }
 }private string name;
        }private string name;

 public Address Address
        public Address Address
 {
        {
 get { return address; }
            get { return address; }
 set { address = value; }
            set { address = value; }
 }private Address address;
        }private Address address;
 }
    }
 
必须在将要序列化的类上加入特性[Serializable]
生成测试数据:
 public static Customer GetGustomer()
        public static Customer GetGustomer()
 {
        {
 Customer customer = new Customer();
            Customer customer = new Customer();
 Address address = new Address();
            Address address = new Address();
 address.City = "北京";
            address.City = "北京";
 address.State = "丰台";
            address.State = "丰台";
 address.Street = "马家堡西里";
            address.Street = "马家堡西里";
 
            
 customer.Address = address;
            customer.Address = address;
 customer.Name = "BillChen";
            customer.Name = "BillChen";

 return customer;
            return customer;
 }
        }
 
进行序列化操作。
 [STAThread]
        [STAThread]
 static void Main(string[] args)
        static void Main(string[] args)
 {
        {
 Customer customer = Customers.GetGustomer();
            Customer customer = Customers.GetGustomer();

 SerializerCustomer1(customer);
            SerializerCustomer1(customer);
 SerializerCustomer2(customer);
            SerializerCustomer2(customer);
 SerializerCustomer3(customer);
            SerializerCustomer3(customer);

 Console.ReadLine();
            Console.ReadLine();
 }
        }

 private static void SerializerCustomer1(Customer customer)
        private static void SerializerCustomer1(Customer customer)
 {
        {
 XmlSerializer ser = new XmlSerializer(typeof(Customer));
            XmlSerializer ser = new XmlSerializer(typeof(Customer));
 FileStream stream = new FileStream("test.xml", FileMode.OpenOrCreate);
            FileStream stream = new FileStream("test.xml", FileMode.OpenOrCreate);

 ser.Serialize( stream, customer );
            ser.Serialize( stream, customer );

 stream.Close();
            stream.Close();
 }
        }

 private static void SerializerCustomer2(Customer customer)
        private static void SerializerCustomer2(Customer customer)
 {
        {
 XmlSerializer ser = new XmlSerializer(typeof(Customer));
            XmlSerializer ser = new XmlSerializer(typeof(Customer));
 
            
 MemoryStream stream = new MemoryStream(100);
            MemoryStream stream = new MemoryStream(100);
 ser.Serialize( stream, customer );
            ser.Serialize( stream, customer );

 stream.Position = 0;
            stream.Position = 0;
 using(StreamReader reader = new StreamReader(stream, Encoding.UTF8))
            using(StreamReader reader = new StreamReader(stream, Encoding.UTF8))
 {
            {

 Console.Write(reader.ReadToEnd());
                Console.Write(reader.ReadToEnd());


 }
            }
 }
        }

 private static void SerializerCustomer3(Customer customer)
        private static void SerializerCustomer3(Customer customer)
 {
        {
 XmlSerializer ser = new XmlSerializer(typeof(Customer));
            XmlSerializer ser = new XmlSerializer(typeof(Customer));
 
            
 MemoryStream stream = new MemoryStream(100);
            MemoryStream stream = new MemoryStream(100);
 XmlTextWriter writer = new XmlTextWriter(stream, Encoding.UTF8);
            XmlTextWriter writer = new XmlTextWriter(stream, Encoding.UTF8);
 writer.Formatting = Formatting.Indented;//缩进
            writer.Formatting = Formatting.Indented;//缩进
 ser.Serialize( writer, customer );
            ser.Serialize( writer, customer );

 stream.Position = 0;
            stream.Position = 0;
 using(StreamReader reader = new StreamReader(stream, Encoding.UTF8))
            using(StreamReader reader = new StreamReader(stream, Encoding.UTF8))
 {
            {
 string line;
                string line;
 while((line = reader.ReadLine()) != null)
                while((line = reader.ReadLine()) != null)
 {
                {
 Console.WriteLine(line);
                    Console.WriteLine(line);
 }
                }
 }
            }
 writer.Close();
            writer.Close();
 }
        }
 
以上是序列化指定的类,及读取序列化后的XML内容的几种方式。
http://billchen.cnblogs.com/archive/2005/08/27/223992.aspx
XML序列化可以让你使用class-friendly的方式操作XML。我们可以方便的将某个类序列化成XML字符串或文件,这里是一个例子。
Address类:
 [Serializable]
 [Serializable] public class Address
    public class Address {
    { public Address(){}
        public Address(){}

 public string Street
        public string Street {
        { get { return street; }
            get { return street; } set { street = value; }
            set { street = value; } }private string street;
        }private string street;
 public string City
        public string City {
        { get { return city; }
            get { return city; } set { city = value; }
            set { city = value; } }private string city;
        }private string city;
 public string State
        public string State {
        { get { return state; }
            get { return state; } set { state = value; }
            set { state = value; } }private string state;
        }private string state; }
    }Customer类:
 [Serializable]
    [Serializable] public class Customer
    public class Customer {
    { public Customer(){}
        public Customer(){}
 public string Name
        public string Name {
        { get { return name; }
            get { return name; } set { name = value; }
            set { name = value; } }private string name;
        }private string name;
 public Address Address
        public Address Address {
        { get { return address; }
            get { return address; } set { address = value; }
            set { address = value; } }private Address address;
        }private Address address; }
    }
必须在将要序列化的类上加入特性[Serializable]
生成测试数据:
 public static Customer GetGustomer()
        public static Customer GetGustomer() {
        { Customer customer = new Customer();
            Customer customer = new Customer(); Address address = new Address();
            Address address = new Address(); address.City = "北京";
            address.City = "北京"; address.State = "丰台";
            address.State = "丰台"; address.Street = "马家堡西里";
            address.Street = "马家堡西里"; 
             customer.Address = address;
            customer.Address = address; customer.Name = "BillChen";
            customer.Name = "BillChen";
 return customer;
            return customer; }
        }
进行序列化操作。
 [STAThread]
        [STAThread] static void Main(string[] args)
        static void Main(string[] args) {
        { Customer customer = Customers.GetGustomer();
            Customer customer = Customers.GetGustomer();
 SerializerCustomer1(customer);
            SerializerCustomer1(customer); SerializerCustomer2(customer);
            SerializerCustomer2(customer); SerializerCustomer3(customer);
            SerializerCustomer3(customer);
 Console.ReadLine();
            Console.ReadLine(); }
        }
 private static void SerializerCustomer1(Customer customer)
        private static void SerializerCustomer1(Customer customer) {
        { XmlSerializer ser = new XmlSerializer(typeof(Customer));
            XmlSerializer ser = new XmlSerializer(typeof(Customer)); FileStream stream = new FileStream("test.xml", FileMode.OpenOrCreate);
            FileStream stream = new FileStream("test.xml", FileMode.OpenOrCreate);
 ser.Serialize( stream, customer );
            ser.Serialize( stream, customer );
 stream.Close();
            stream.Close(); }
        }
 private static void SerializerCustomer2(Customer customer)
        private static void SerializerCustomer2(Customer customer) {
        { XmlSerializer ser = new XmlSerializer(typeof(Customer));
            XmlSerializer ser = new XmlSerializer(typeof(Customer)); 
             MemoryStream stream = new MemoryStream(100);
            MemoryStream stream = new MemoryStream(100); ser.Serialize( stream, customer );
            ser.Serialize( stream, customer );
 stream.Position = 0;
            stream.Position = 0; using(StreamReader reader = new StreamReader(stream, Encoding.UTF8))
            using(StreamReader reader = new StreamReader(stream, Encoding.UTF8)) {
            {
 Console.Write(reader.ReadToEnd());
                Console.Write(reader.ReadToEnd());

 }
            } }
        }
 private static void SerializerCustomer3(Customer customer)
        private static void SerializerCustomer3(Customer customer) {
        { XmlSerializer ser = new XmlSerializer(typeof(Customer));
            XmlSerializer ser = new XmlSerializer(typeof(Customer)); 
             MemoryStream stream = new MemoryStream(100);
            MemoryStream stream = new MemoryStream(100); XmlTextWriter writer = new XmlTextWriter(stream, Encoding.UTF8);
            XmlTextWriter writer = new XmlTextWriter(stream, Encoding.UTF8); writer.Formatting = Formatting.Indented;//缩进
            writer.Formatting = Formatting.Indented;//缩进 ser.Serialize( writer, customer );
            ser.Serialize( writer, customer );
 stream.Position = 0;
            stream.Position = 0; using(StreamReader reader = new StreamReader(stream, Encoding.UTF8))
            using(StreamReader reader = new StreamReader(stream, Encoding.UTF8)) {
            { string line;
                string line; while((line = reader.ReadLine()) != null)
                while((line = reader.ReadLine()) != null) {
                { Console.WriteLine(line);
                    Console.WriteLine(line); }
                } }
            } writer.Close();
            writer.Close(); }
        }
以上是序列化指定的类,及读取序列化后的XML内容的几种方式。
 
                    
                 
        
 
             
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号