我有以下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>
I have the following Class:
[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”元素,则暂时不予处理。
不幸的是,在调用我的Deserialize方法后,XML数据目前没有被映射到我的类属性中;它们被留空了。
为了完整起见,这是我的Deserialize方法:
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中反序列化这些数据?