物件與XML之間互相轉化的一個基類

iDotNetSpace發表於2009-02-23

在實際開發過程中經常需要把一個物件儲存到XML中,同時也需要把儲存的XML轉化為物件。隨便程式碼很簡單。是人都會。但經常寫著這樣的重複程式碼就想能不能有什麼樣的方法可以少寫點程式碼呢。能不寫當然最好了。經過摸索就寫了下面這個小玩意

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Xml.Serialization;

namespace KSoft.ApplicationCommunication
{
    
public class XMLObject
    {
        
internal void ReadXml(string xml)
        {
            
object obj = null;
            StringReader reader 
= new StringReader(xml);
            
try
            {
                System.Xml.Serialization.XmlSerializer ser 
= new XmlSerializer(this.GetType());
                obj 
= ser.Deserialize(reader);
            }
            
finally { reader.Close(); }

            
//給This的屬性賦值
            System.Reflection.PropertyInfo[] propertyThis = this.GetType().GetProperties();
            System.Reflection.PropertyInfo[] propertyObj 
= obj.GetType().GetProperties();
            
for (int i = 0; i < propertyThis.Length; i++)
            {
                propertyThis[i].SetValue(
this, propertyObj[i].GetValue(obj, null), null);
            }  
        }

        
public string ToXML()
        {
            System.IO.StringWriter writer 
= new System.IO.StringWriter();
            System.Xml.Serialization.XmlSerializer ser 
= new XmlSerializer(this.GetType());
            ser.Serialize(writer, 
this);
            
string strRet = writer.ToString();
            writer.Close();
            
return strRet;
        }
    }
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-557467/,如需轉載,請註明出處,否則將追究法律責任。

相關文章