zoukankan      html  css  js  c++  java
  • .Net下的XML序列化(一)

    XML序列化可以让你使用class-friendly的方式操作XML。我们可以方便的将某个类序列化成XML字符串或文件,这里是一个例子。

    Address类:
        [Serializable]
        
    public class Address
        
    {
            
    public Address(){}


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

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

            
    public string State
            
    {
                
    get return state; }
                
    set { state = value; }
            }
    private string state;
        }

    Customer类:
        [Serializable]
        
    public class Customer
        
    {
            
    public Customer(){}

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

            
    public Address Address
            
    {
                
    get return address; }
                
    set { address = value; }
            }
    private Address address;
        }

    必须在将要序列化的类上加入特性[Serializable]

    生成测试数据:
            public static Customer GetGustomer()
            
    {
                Customer customer 
    = new Customer();
                Address address 
    = new Address();
                address.City 
    = "北京";
                address.State 
    = "丰台";
                address.Street 
    = "马家堡西里";
                
                customer.Address 
    = address;
                customer.Name 
    = "BillChen";

                
    return customer;
            }

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

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

                Console.ReadLine();
            }


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

                ser.Serialize( stream, customer );

                stream.Close();
            }


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

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

                    Console.Write(reader.ReadToEnd());


                }

            }


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

                stream.Position 
    = 0;
                using(StreamReader reader = new StreamReader(stream, Encoding.UTF8))
                
    {
                    
    string line;
                    
    while((line = reader.ReadLine()) != null)
                    
    {
                        Console.WriteLine(line);
                    }

                }

                writer.Close();
            }

    以上是序列化指定的类,及读取序列化后的XML内容的几种方式。
  • 相关阅读:
    Android 开发 深入理解Handler、Looper、Messagequeue 转载
    Android 开发 Handler的基本使用
    Java 学习 注解
    Android 开发 AlarmManager 定时器
    Android 开发 框架系列 百度语音合成
    Android 开发 框架系列 Google的ORM框架 Room
    Android 开发 VectorDrawable 矢量图 (三)矢量图动画
    Android 开发 VectorDrawable 矢量图 (二)了解矢量图属性与绘制
    Android 开发 VectorDrawable 矢量图 (一)了解Android矢量图与获取矢量图
    Android 开发 知晓各种id信息 获取线程ID、activityID、内核ID
  • 原文地址:https://www.cnblogs.com/chenjunbiao/p/1760275.html
Copyright © 2011-2022 走看看