我有以下我无法控制的 XML 结构(为简洁而编辑)。
<GetVehicles>
<ApplicationArea>
<Sender>
<Blah></Blah>
</Sender>
</ApplicationArea>
<DataArea>
<Error>
<Blah></Blah>
</Error>
<Vehicles>
<Vehicle>
<Colour>Blue</Colour>
<NumOfDoors>3</NumOfDoors>
<BodyStyle>Hatchback</BodyStyle>
<Vehicle>
</Vehicles>
</DataArea>
</GetVehicles>
我有以下课程:
[XmlRoot("GetVehicles"), XmlType("Vehicle")]
public class Vehicle
{
public string Colour { get; set; }
public string NumOfDoors { get; set; }
public string BodyStyle { get; set; }
}
我希望能够将 XML 反序列化为该 Vehicle 类的单个实例。99% 的情况下,XML 应该只返回一个“Vehicle”元素。如果它在“Vehicles”元素中包含多个“Vehicle”元素,我还没有处理它。
不幸的是,XML 数据目前没有映射到我的类属性;在调用我的反序列化方法时,它们被留空。
为了完整起见,这是我的反序列化方法:
private static T Deserialize<T>(string data) where T : class, new()
{
if (string.IsNullOrEmpty(data))
return null;
var ser = new XmlSerializer(typeof(T));
using (var sr = new StringReader(data))
{
return (T)ser.Deserialize(sr);
}
}
我不关心其他更多的父元素,例如“ApplicationArea”、“Error”等。我只对提取“Vehicle”元素中的数据感兴趣。如何让它只从 XML 反序列化这些数据?