[C #] use C # to serialize a class into XML,
Directly run the Code:
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; }
Model class, the data structure to be serialized:
// [XmlRoot ("sequence")] public class Sequence {// [XmlAttribute ("id")] public string Id {get; set ;} // [XmlElement ("media")] public Media {get; set;} public Sequence () {Id = "Sequence 2"; Media = new Media ();}} // [XmlRoot ("media")] public class Media {// [XmlAttribute ("id")] public string Id {get; set ;} // [XmlElement ("video")] public Video {get; set ;}// [XmlElement ("audio")] public 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 ";}}
Actual use:
class Program { static void Main(string[] args) { Sequence model = new Sequence(); XmlSerializer.SaveToXml("text.xml", model, model.GetType()); } }
Result:
<? Xml version = "1.0" encoding = "UTF-8"?> <Sequence> <Id> Sequence 2 </Id> <Media> <Id> media one </Id> <Video> <name> video 12 </name> </Video> <Audio> <name> video 12 </name> </Audio> </Media> </Sequence>