直接上代碼:
public static class XmlSerializer { public static void SaveToXml(string filePath, object sourceObj, Type type) { if (!string.IsNullOrWhiteSpace(filePath) && sourceObj != null) { type = type != null ? type : sourceObj.GetType(); using (StreamWriter writer = new StreamWriter(filePath)) { System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(type); XmlSerializerNamespaces nameSpace = new XmlSerializerNamespaces(); nameSpace.Add("", ""); //not ot output the default namespace xmlSerializer.Serialize(writer, sourceObj, nameSpace); } } } public static object LoadFromXml(string filePath, Type type) { object result = null; if (File.Exists(filePath)) { using (StreamReader reader = new StreamReader(filePath)) { System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(type); result = xmlSerializer.Deserialize(reader); } } return result; }
模型類,要序列化的數據結構:
//[XmlRoot("sequence")] public class Sequence { //[XmlAttribute("id")] public string Id { get; set; } // [XmlElement("media")] public Media Media { get; set; } public Sequence() { Id = "序列2"; Media = new Media(); } } //[XmlRoot("media")] public class Media { // [XmlAttribute("id")] public string Id { get; set; } //[XmlElement("video")] public Video Video { get; set; } // [XmlElement("audio")] public Audio Audio { get; set; } public Media() { Id = "media one"; Video = new Video(); Audio = new Audio(); } } public class Video { public string name { get; set; } public Video() { name = "video 12"; } } public class Audio { public string name { get; set; } public Audio() { name = "video 12"; } }
實際使用:
class Program { static void Main(string[] args) { Sequence model = new Sequence(); XmlSerializer.SaveToXml("text.xml", model, model.GetType()); } }
結果:
<?xml version="1.0" encoding="utf-8"?> <Sequence> <Id>序列2</Id> <Media> <Id>media one</Id> <Video> <name>video 12</name> </Video> <Audio> <name>video 12</name> </Audio> </Media> </Sequence>