在使用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; }
}
|
这里的XmlRoot
与XmlElement
分别是对根元素名称与其序列化的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));
}
|