Ho la seguente struttura XML (modificata per brevità) di cui non ho il controllo.Deserializzare l'elemento XML nidificato in classe in 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>
Ho la seguente Classe:
[XmlRoot("GetVehicles"), XmlType("Vehicle")]
public class Vehicle
{
public string Colour { get; set; }
public string NumOfDoors { get; set; }
public string BodyStyle { get; set; }
}
io voglio essere in grado di deserializzare il codice XML in una singola istanza di questa classe di veicoli. Il 99% delle volte, l'XML dovrebbe restituire solo un singolo elemento "Veicolo". Non mi sto ancora occupando di questo se contiene più elementi "Veicolo" all'interno dell'elemento "Veicoli".
Sfortunatamente, i dati XML non vengono attualmente associati alle proprietà della mia classe; vengono lasciati in bianco dopo aver chiamato il mio metodo Deserialize.
Per completezza, ecco il mio metodo 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);
}
}
Non mi preoccupo per gli altri elementi più generali come 'Settore applicazione', 'Errore', ecc sono solo interessante per l'estrazione dei dati all'interno dell'elemento "Veicolo". Come faccio a deserializzare questi dati dall'XML?
Funziona alla grande. Molte grazie. – marcusstarnes