JerrySoft

导航

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>

posted on 2007-09-04 17:25  水-手  阅读(359)  评论(0)    收藏  举报