Ich habe die folgende XML-Struktur (zur Kürze bearbeitet), die ich nicht kontrollieren kann.Deserialisieren geschachtelten XML-Element in Klasse 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>
Ich habe die folgende Klasse:
[XmlRoot("GetVehicles"), XmlType("Vehicle")]
public class Vehicle
{
public string Colour { get; set; }
public string NumOfDoors { get; set; }
public string BodyStyle { get; set; }
}
Ich möchte die XML-Daten in einer einzigen Instanz dieser Fahrzeugklasse deserialisieren können. In 99% der Fälle sollte der XML-Code nur ein einziges "Vehicle" -Element zurückgeben. Ich bin noch nicht damit beschäftigt, wenn es mehrere "Vehicle" -Elemente im Element "Vehicles" enthält.
Leider werden die XML-Daten derzeit nicht meinen Klasseneigenschaften zugeordnet. Sie werden beim Aufruf meiner Deserialize-Methode leer gelassen.
Für Vollständigkeit, hier ist meine Deserialize Methode:
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);
}
}
I usw. nicht über die anderen mehr übergeordneten Elemente wie ‚Application‘, ‚Fehler‘ kümmern bin ich nur interessant, in die Daten zu extrahieren innerhalb des Elements 'Fahrzeug'. Wie bekomme ich es, diese Daten nur aus dem XML-Code zu deserialisieren?
Funktioniert gut. Danke vielmals. – marcusstarnes