首页 >后端开发 >C++ >如何将XML文档当作C#对象?

如何将XML文档当作C#对象?

Barbara Streisand
Barbara Streisand原创
2025-02-02 17:36:10805浏览

How to Deserialize XML Documents into C# Objects?

.NET环境下XML文档的反序列化详解

在.NET应用程序中处理XML文档时,经常需要将XML文档反序列化为C#对象。此过程涉及将XML数据转换为相应的C#表示形式。

示例XML文档

考虑以下包含各种汽车信息的XML文档:

<code class="language-xml"><?xml version="1.0" encoding="utf-8"?><cars><car><stocknumber>1020</stocknumber><make>Nissan</make><model>Sentra</model></car><car><stocknumber>1010</stocknumber><make>Toyota</make><model>Corolla</model></car><car><stocknumber>1111</stocknumber><make>Honda</make><model>Accord</model></car></cars></code>

定义C#类

为了反序列化XML文档,我们需要定义表示XML结构的C#类。创建两个类:

  • Car类:表示单个汽车的详细信息。

    <code class="language-csharp">  [Serializable()]
      public class Car
      {
        [System.Xml.Serialization.XmlElementAttribute("StockNumber")]
        public string StockNumber{ get; set; }
    
        [System.Xml.Serialization.XmlElementAttribute("Make")]
        public string Make{ get; set; }
    
        [System.Xml.Serialization.XmlElementAttribute("Model")]
        public string Model{ get; set; }
      }</code>
  • Cars类:表示XML文档的根元素,包含一个Car对象的数组。

    <code class="language-csharp">  [System.Xml.Serialization.XmlRootAttribute("Cars", Namespace = "", IsNullable = false)]
      public class Cars
      {
        [XmlArrayItem(typeof(Car))]
        public Car[] Car { get; set; }
    
      }</code>

反序列化过程

要反序列化XML文档,请创建一个包含Deserialize方法的CarSerializer类:

<code class="language-csharp">public class CarSerializer
{
    public Cars Deserialize()
    {
        string path = HttpContext.Current.ApplicationInstance.Server.MapPath("~/App_Data/") + "cars.xml";

        using (XmlReader reader = XmlReader.Create(path))
        {
            XmlSerializer ser = new XmlSerializer(typeof(Cars));
            Cars cars = (Cars)ser.Deserialize(reader);
            return cars;
        }
    }
}</code>

此方法加载XML文档,使用XmlSerializer将其转换为Cars对象,并返回反序列化的数据。

使用反序列化的数据

现在,您可以使用Deserialize方法获取反序列化的Cars对象,然后访问它来操作和检索有关汽车的信息。

以上是如何将XML文档当作C#对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn