XML的C#结构

XML的C#结构,c#,serialization,C#,Serialization,我有一个来自外部源的xml文档,因此无法更改结构。我需要将其序列化为C#对象:- <vehicles> <Car> <Vauxhall> <Driver> <Name>John</Name> </Driver> </Car> <Car> <Ford>

我有一个来自外部源的xml文档,因此无法更改结构。我需要将其序列化为C#对象:-

<vehicles>
   <Car>
       <Vauxhall>
          <Driver>
             <Name>John</Name>
          </Driver>
   </Car>
   <Car>
       <Ford>
         <Driver>
            <Name>Jack</Name>
         </Driver>
       </Ford>
   </Car>
</vehicles>

约翰
杰克
有谁能告诉我们,对于上述简单的xml文档,C#反序列化类是什么样子的

Public Class Wheels
{
  <XmlAttribute()>
  public string CarMake;
  //If you want to have a value in your "Wheels"
  <XmlText()>
  public string Value;
}
如果将
控制盘的
值设置为
,例如
Astra
,您将获得:

<Vehicles>
  <Car CarMake="Vauxhall">Astra<Car/>
<Vehicles>

阿斯特拉
编辑

在看到你想要的整体结构后,你会有这样的东西:

public class Test
{
   <XmlArray("Vehicles")>
   <XmlArrayItem("Car")>
   public List<Wheel> Wheels = new List<Wheel>();
}
公共类测试
{
公共列表控制盘=新列表();
}

您应该能够创建一个通用的Car类,然后为每个特定的make-sucks实现该类,但是如果您不能更改xml,我看不出还有什么其他方法可以做到这一点

public class Car
{
    private Driver _driver;

    public Driver Driver
    {
        get
        {
            return _driver;
        }
        set
        {
            _driver = value;
        }
    }
}

public class Driver
{
    private string _name;

    public string Name
    {
        get
        {
            return _name;
        }
        set
        {
            _name = value;
        }
    }
}

public class Vauxhall : Car
{
}

public class Ford : Car
{
}

你的xml结构无效。你可以整理一下这个问题的语法,因为很难确定你的问题是什么……C#也不是。你为什么要调用你的对象
Wheels
,然后将其序列化到
Car
节点,这太让人困惑了-除非你用下面的方式提到一辆车:“我给自己买了一套新的车轮”。我想你需要在这里学习三件事C#,XML和英语,因为我根本不明白你想说什么。感谢卢克提供的信息,使用上面的编辑代码如何能够访问福特司机,类似于:-
Console.Write(Vehicles.Car.Vauxhall.Driver.Name)不幸的是,不,情况并非如此,因为您的初始规范到目前为止已经发生了更改。
public class Car
{
    private Driver _driver;

    public Driver Driver
    {
        get
        {
            return _driver;
        }
        set
        {
            _driver = value;
        }
    }
}

public class Driver
{
    private string _name;

    public string Name
    {
        get
        {
            return _name;
        }
        set
        {
            _name = value;
        }
    }
}

public class Vauxhall : Car
{
}

public class Ford : Car
{
}