首頁 >後端開發 >C++ >如何將XML當選為C#類?

如何將XML當選為C#類?

Patricia Arquette
Patricia Arquette原創
2025-02-02 17:26:13976瀏覽

How to Deserialize XML into C# Classes?

C# XML反序列化:完整指南

背景:

反序列化是指將序列化數據轉換回其原始對象格式的過程。本文提供一個完整的指南,介紹如何將XML文檔反序列化到表示XML結構的自定義C#類中。

反序列化過程:

  1. 定義類層次結構: 創建反映XML文檔結構的C#類。使用[Serializable][XmlElement]屬性將XML元素映射到類屬性。
<code class="language-csharp">[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; }
}</code>
  1. 創建反序列化邏輯: 實現一個方法,將XML文檔反序列化到Cars類的實例中。
<code class="language-csharp">public class CarSerializer
{
    public Cars Deserialize(string path)
    {
        // 读取XML文件
        XmlSerializer serializer = new XmlSerializer(typeof(Cars));
        using (StreamReader reader = new StreamReader(path))
        {
            // 将XML反序列化到Cars对象
            return (Cars)serializer.Deserialize(reader);
        }
    }
}</code>

替代方法:

另一種方法是使用XSD(XML模式定義)生成符合XML結構的C#類。

  • 將XML文件保存到磁盤為foo.xml
  • 生成XSD模式:xsd foo.xml
  • 生成C#代碼:xsd foo.xsd /classes
  • 這將創建foo.cs,其中包含XML結構的C#類。

使用XmlReader的替代實現:

<code class="language-csharp">XmlSerializer ser = new XmlSerializer(typeof(Cars));
Cars cars;
using (XmlReader reader = XmlReader.Create(path))
{
    cars = (Cars)ser.Deserialize(reader);
}</code>

通過以上步驟,您可以輕鬆地將XML數據反序列化到C#對像中,方便後續處理和使用。 請注意將@"path/to/cars.xml"替換為您的實際XML文件路徑。

以上是如何將XML當選為C#類?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn