
C# XML反序列化:完整指南
背景:
反序列化是指將序列化數據轉換回其原始對象格式的過程。本文提供一個完整的指南,介紹如何將XML文檔反序列化到表示XML結構的自定義C#類中。
反序列化過程:
-
定義類層次結構: 創建反映XML文檔結構的C#類。使用
[Serializable]
和[XmlElement]
屬性將XML元素映射到類屬性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | [Serializable()]
public class Car
{
[XmlElementAttribute( "StockNumber" )]
public string StockNumber { get; set; }
[XmlElementAttribute( "Make" )]
public string Make { get; set; }
[XmlElementAttribute( "Model" )]
public string Model { get; set; }
}
[XmlRootAttribute( "Cars" , IsNullable = false)]
public class Cars
{
[XmlArrayItem(typeof(Car))]
public Car[] Car { get; set; }
}
|
登入後複製
- 創建反序列化邏輯: 實現一個方法,將XML文檔反序列化到
Cars
類的實例中。
1 2 3 4 5 6 7 8 9 10 11 12 13 | public class CarSerializer
{
public Cars Deserialize(string path)
{
XmlSerializer serializer = new XmlSerializer(typeof(Cars));
using (StreamReader reader = new StreamReader(path))
{
return (Cars)serializer.Deserialize(reader);
}
}
}
|
登入後複製
替代方法:
另一種方法是使用XSD(XML模式定義)生成符合XML結構的C#類。
- 將XML文件保存到磁盤為
foo.xml
- 生成XSD模式:
xsd foo.xml
- 生成C#代碼:
xsd foo.xsd /classes
- 這將創建
foo.cs
,其中包含XML結構的C#類。
使用XmlReader
的替代實現:
1 2 3 4 5 6 | XmlSerializer ser = new XmlSerializer(typeof(Cars));
Cars cars;
using (XmlReader reader = XmlReader.Create(path))
{
cars = (Cars)ser.Deserialize(reader);
}
|
登入後複製
通過以上步驟,您可以輕鬆地將XML數據反序列化到C#對像中,方便後續處理和使用。 請注意將@"path/to/cars.xml"
替換為您的實際XML文件路徑。
以上是如何將XML當選為C#類?的詳細內容。更多資訊請關注PHP中文網其他相關文章!