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