.Net下的XML序列化(一)
时间:2011-01-15 来源:zhdonghu
[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;
}
public class Address

public Address()

public string Street

get

set

}private string street;
public string City

get

set

}private string city;
public string State

get

set

}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;
}
public class Customer

public Customer()

public string Name

get

set

}private string name;
public Address Address

get

set

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

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();
}
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内容的几种方式。
相关阅读 更多 +
排行榜 更多 +