XML序列化
实体类:
[System.Xml.Serialization.XmlRootAttribute("ProductSample")]//此行注释掉仍能正常串行化
public class Product
{
private int prodId;
private string prodName;
private int catId;
private Decimal unitPrice;
private bool discont;
private int disc;

//added the Discount attribute
[XmlAttributeAttribute(AttributeName = "Discount")]
public int Discount
{
get { return disc; }
set { disc = value; }
}

[XmlElementAttribute()]//此行注释掉仍能正常串行化
public int ProductID
{
get { return prodId; }
set { prodId = value; }
}
[XmlElementAttribute()]
public string ProductName
{
get { return prodName; }
set { prodName = value; }
}
[XmlElementAttribute()]
public int CategoryID
{
get { return catId; }
set { catId = value; }
}
[XmlElementAttribute()]
public Decimal UnitPrice
{
get { return unitPrice; }
set { unitPrice = value; }
}
[XmlElementAttribute()]
public bool Discontinued
{
get { return discont; }
set { discont = value; }
}
}
序列化与反序列化测试:
public class Test
{
/// <summary>
/// 序列化实体对象
/// </summary>
public static void Write()
{
Product product = new Product();

//set some properties
product.ProductID = 200;
product.CategoryID = 100;
product.Discontinued = false;
product.ProductName = "Serialize Objects";
product.UnitPrice = 1000;

// 串行化
TextWriter tw = new StreamWriter("product.xml");
XmlSerializer xs = new XmlSerializer(typeof(Product));
xs.Serialize(tw, product); // 序列化对象
tw.Close();
}
/// <summary>
/// 从Xml文件中获取实体对象
/// </summary>
public static void Read()
{
TextReader tr = new StreamReader("product.xml");
XmlSerializer xs = new XmlSerializer(typeof(Product));
Product product = (Product)xs.Deserialize(tr); // 反序列化对象
//Console.WriteLine(product.ProductName);
}
static void Main()
{
Test.Write();
Test.Read();
}
序列化成的XML文件(product.xml)
<?xml version="1.0" encoding="utf-8"?>
<ProductSample xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Discount="0">
<ProductID>200</ProductID>
<ProductName>Serialize Objects</ProductName>
<CategoryID>100</CategoryID>
<UnitPrice>1000</UnitPrice>
<Discontinued>false</Discontinued>
</ProductSample>
[System.Xml.Serialization.XmlRootAttribute("ProductSample")]//此行注释掉仍能正常串行化
public class Product
{
private int prodId;
private string prodName;
private int catId;
private Decimal unitPrice;
private bool discont;
private int disc;
//added the Discount attribute
[XmlAttributeAttribute(AttributeName = "Discount")]
public int Discount
{
get { return disc; }
set { disc = value; }
}
[XmlElementAttribute()]//此行注释掉仍能正常串行化
public int ProductID
{
get { return prodId; }
set { prodId = value; }
}
[XmlElementAttribute()]
public string ProductName
{
get { return prodName; }
set { prodName = value; }
}
[XmlElementAttribute()]
public int CategoryID
{
get { return catId; }
set { catId = value; }
}
[XmlElementAttribute()]
public Decimal UnitPrice
{
get { return unitPrice; }
set { unitPrice = value; }
}
[XmlElementAttribute()]
public bool Discontinued
{
get { return discont; }
set { discont = value; }
}
}序列化与反序列化测试:
public class Test
{
/// <summary>
/// 序列化实体对象
/// </summary>
public static void Write()
{
Product product = new Product();
//set some properties
product.ProductID = 200;
product.CategoryID = 100;
product.Discontinued = false;
product.ProductName = "Serialize Objects";
product.UnitPrice = 1000;
// 串行化
TextWriter tw = new StreamWriter("product.xml");
XmlSerializer xs = new XmlSerializer(typeof(Product));
xs.Serialize(tw, product); // 序列化对象
tw.Close();
}
/// <summary>
/// 从Xml文件中获取实体对象
/// </summary>
public static void Read()
{
TextReader tr = new StreamReader("product.xml");
XmlSerializer xs = new XmlSerializer(typeof(Product));
Product product = (Product)xs.Deserialize(tr); // 反序列化对象
//Console.WriteLine(product.ProductName);
}
static void Main()
{
Test.Write();
Test.Read();
}序列化成的XML文件(product.xml)
<?xml version="1.0" encoding="utf-8"?>
<ProductSample xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Discount="0">
<ProductID>200</ProductID>
<ProductName>Serialize Objects</ProductName>
<CategoryID>100</CategoryID>
<UnitPrice>1000</UnitPrice>
<Discontinued>false</Discontinued>
</ProductSample>

浙公网安备 33010602011771号