【C#】使用C#将类序列化为XML

时间:2023-03-09 00:30:35
【C#】使用C#将类序列化为XML

直接上代码:

 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>