Tôi có cấu trúc XML sau đây (được chỉnh sửa cho ngắn gọn) mà tôi không có quyền kiểm soát.Deserialize phần tử XML lồng vào lớp trong C#
<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>
Tôi có lớp sau:
[XmlRoot("GetVehicles"), XmlType("Vehicle")]
public class Vehicle
{
public string Colour { get; set; }
public string NumOfDoors { get; set; }
public string BodyStyle { get; set; }
}
Tôi muốn để có thể deserialize XML thành một trường hợp duy nhất của lớp Vehicle này. 99% thời gian, XML chỉ nên trả về một phần tử 'Xe'. Tôi chưa xử lý nó nếu nó chứa nhiều phần tử 'Xe' bên trong phần tử 'Xe'.
Thật không may, dữ liệu XML hiện không được ánh xạ tới thuộc tính lớp của tôi; chúng đang bị bỏ trống khi gọi phương thức Deserialize của tôi.
Để hoàn chỉnh, đây là phương pháp Deserialize của tôi:
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);
}
}
Tôi không quan tâm đến các yếu tố cha mẹ hơn khác như 'ApplicationArea', 'Lỗi' vv Tôi chỉ thú vị trong giải nén dữ liệu trong phần tử 'Xe'. Làm thế nào để tôi có được nó để chỉ deserialize dữ liệu này từ XML?
Hoạt động tuyệt vời. Cảm ơn rất nhiều. – marcusstarnes