将指定实体序列化为 XML 文档

在使用Json.Net的时候,如果要生成一个JSON文档的话,只需要构建一个实体,并扔进SerializeObject方法即可。 那么如果我们需要将一个实体序列化为XML呢?

这个时候我们就需要使用到XMLSerializer,根据MSDN的介绍

XML 序列化是将对象的公共属性 (Property) 和字段转换为序列格式(这里是指 XML)以便存储或传输的过程。

这里他会将我们的公共属性转化为序列格式,下面我们来声明一个实体模型:

1
2
3
4
5
6
7
8
[XmlRoot(ElementName = "Student")]
public class StudentModel
{
    [XmlElement("StudentName")]
    public string Name { get; set; }
    [XmlElement("StudentAge")]
    public int Age{ get; set; }
}

这里的XmlRootXmlElement分别是对根元素名称与其序列化的XML元素节点的实际名称。

因为在与第三方系统对接的时候,可能对方提供的一些文档与己方模型属性名称不匹配,而又不想因为第三方系统的对接而重构自己所有原有属性的名称,这个时候这两个Attribute就能够提供作用了。

下面我们如果要将这个对象序列化,需要写一个辅助方法:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
public static string SerializeXMLObject<T>(T sourceObj)
{
    XMLSerializer _serializer = new XMLSerializer _serializer(typeof(T));
    using(MemoryStream _stream = new MemoryStream())
    {
        _serializer.Serialize(_stream,sourceObj);
        _stream.Position = 0;
        using(StreamReader _reader = new StreamReader(_stream))
        {
            return _reader.ReadToEnd();
        }
    }
}

so,当调用SerializeXMLObject方法的时候,传入要序列化的对象即可。

1
2
3
4
5
6
7
private void Test()
{
    StudentModel _obj2 = new StudentModel();
   _obj2.Name = "李四";
   _obj2.Age = 25;
   MessageBox.Show(SerializerUtils.SerializeXMLObject(_obj2));
}

图片

Built with Hugo
主题 StackJimmy 设计