我有一个叫做Car的类,有一个名为LicencePlate的属性, 当我使用XmlRootAttribute Cars序列化List时,创建的XML是
<Cars>
<Car>
<LicencePlate></LicencePlate>
</Car>
<Cars>
序列化的代码是
XmlSerializer ser = new XmlSerializer(ListCars.GetType(), new XmlRootAttribute("Cars"));
但是当我反序列化这个XML时会出错,因为该类没有'Cars'属性。
有人可以帮帮我吗?答案 0 :(得分:1)
如有疑问,请妥善处理:
[XmlRoot("Cars"), XmlType("Cars")]
public class SomeWrapper {
[XmlElement("Car")]
public List<Car> Cars { get { return cars; } }
private readonly List<Car> cars = new List<Car>();
}
这个包装器应该知道正确序列化/反序列化。
答案 1 :(得分:0)
试试这个:
汽车类:
public class Car
{
public string LicencePlate { get; set; }
}
您的XML类:
[XmlRoot("Cars")]
public class ListCars
{
[XmlElement("Car")]
public List<Car> Car { get; set; }
}
干杯。
答案 2 :(得分:-1)
您需要使用与序列化它相同的XmlSerializer来反序列化对象。通常,您将使用XmlElementAttribute
和相关的XML序列化属性在类本身中指定XML结构。
如果出于某种原因,在序列化对象时确实需要覆盖根元素,则需要覆盖朝向另一个方向的根元素。
var output = new MemoryStream();
LoadSerializedObjectIntoTheStream(output);
var ser = new XmlSerializer(typeof(ListCars), new XmlRootAttribute("Cars"));
var carlist = ser.Deserialize(output) as ListCars;