[C#]XML的序列化(Serializer)和反序列化的簡單工具-XSerializer

  • 671
  • 0
  • C#
  • 2018-04-23

[C#]XML的序列化(Serializer)和反序列化的簡單工具

前言

雖然現在是json當道,但還是有很多即有的專案,可能一直延用著xml的格式,來交換資料,這邊我便找了一下有哪幾種,最後我決定了使用XSerializer,感覺夠簡單而且還有持續在維護的感覺,接下來筆記一下這個簡單的工具。

開始動手

首先我們可以直接使用nuget來下載,如下圖


下載完之後,我們很簡單就可以把類別轉成xml的格式字串了

public class Employee
{
	public int Id { get; set; }
	public string Name { get; set; }
}

void Main()
{
	var employees = new List<Employee>
	{
		new Employee
		{
			Id=1,
			Name="1"
		},
		new Employee
		{
			Id=2,
			Name="2"
		},
		new Employee
		{
			Id=3,
			Name="3"
		}
	};

		XmlSerializer<List<Employee>> serializer = new XmlSerializer<List<Employee>>();
	
		string xml = serializer.Serialize(employees);
		xml.Dump();
		
		serializer.Deserialize(xml).Dump();
}

我們可以先看一下Serializer成xml的內容部份



<?xml version="1.0" encoding="UTF-8"?>
<ListOfEmployee xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <Employee>
      <Id>1</Id>
      <Name>1</Name>
   </Employee>
   <Employee>
      <Id>2</Id>
      <Name>2</Name>
   </Employee>
   <Employee>
      <Id>3</Id>
      <Name>3</Name>
   </Employee>
</ListOfEmployee>

最後就是正確的再反序列化C#物件供我們使用了,而此工具其實也可以幫助serializer json,使用方式也是大同小異,如下程式碼

JsonSerializer<List<Employee>> serializer = new JsonSerializer<List<Employee>>();

string xml = serializer.Serialize(employees);
xml.Dump();
serializer.Deserialize(xml).Dump();

結論

此工具對我來說就是簡單,並且作者也很有心的持續維護,如果有更好的建議再請告知囉。