首页 >后端开发 >C++ >如何将XML当选为C#类?

如何将XML当选为C#类?

Patricia Arquette
Patricia Arquette原创
2025-02-02 17:26:13978浏览

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