关于XML序列化的简单例子

using System;
using System.IO;
using System.Xml.Serialization;

namespace SMSTest.Comm
{
    public class SerializeHelper
    {
        //序列化到xml文件  注意:文件将保存到应用程序同级目录
        public static bool Serialize(Type t,object tValue)
        {
            //序列化
            try
            {
                FileStream fs = new FileStream(t.ToString()+".xml", FileMode.Create);
                XmlSerializer xs = new XmlSerializer(t);
                xs.Serialize(fs, tValue);
                fs.Close();
                return true;
            }
            catch(Exception ex) 
            {
                return false;
            }
        }

        //从xml文件反序列化  注意:文件放在应用程序同级目录
        public static object DeSerialize(Type t)
        {
            if (!File.Exists(t.ToString() + ".xml")) return null;
            try
            {
                FileStream fs = new FileStream(t.ToString() + ".xml", FileMode.Open, FileAccess.Read);
                XmlSerializer xs = new XmlSerializer(t);
                return xs.Deserialize(fs);
            }
            catch (Exception e)
            {
                return null;
            }

        }
    }
}

注意要序列化的对象可以控制输出节点名称、样式、是否显示,方法如下:

[XmlRoot("CatsInfo")]  
public class CatCollection  
{  
    [XmlArray("Cats"), XmlArrayItem("Cat")]  
    public Cat[] Cats { get; set; }  
}  
  
[XmlRoot("Cat")]  
public class Cat  
{  
    // 定义Color属性的序列化为cat节点的属性  
    [XmlAttribute("color")]  
    public string Color { get; set; }  
  
    // 要求不序列化Speed属性  
    [XmlIgnore]  
    public int Speed { get; set; }  
  
    // 设置Saying属性序列化为Xml子元素  
    [XmlElement("saying")]  
    public string Saying { get; set; }  
}  

 

posted @ 2006-12-28 13:13  小y  阅读(2616)  评论(0编辑  收藏  举报