In allen Beispielen, die ich für die Verwendung von XmlSerializer
Jedes Mal, wenn eine Liste oder ein Array entsteht, haben Sie eine Art Containerelement wie dieses:
<MyXml>
<Things>
<Thing>One</Thing>
<Thing>Two</Thing>
<Thing>Three</Thing>
</Things>
</MyXml>
Die XML-Datei, die ich habe, hat jedoch keinen Container, der mit Dinge oben. Es fängt einfach an, Elemente zu wiederholen. (Das XML stammt übrigens aus der Geocode API von Google)
Ich habe also XML, das wie folgt aussieht:
<?xml version="1.0" encoding="UTF-8"?>
<GeocodeResponse>
<status>OK</status>
<result>
<type>locality</type>
<type>political</type>
<formatted_address>Glasgow, City of Glasgow, UK</formatted_address>
<address_component>
<long_name>Glasgow</long_name>
<short_name>Glasgow</short_name>
<type>locality</type>
<type>political</type>
</address_component>
<address_component>
<long_name>East Dunbartonshire</long_name>
<short_name>East Dunbartonshire</short_name>
<type>administrative_area_level_3</type>
<type>political</type>
</address_component>
<!-- etc... -->
</result>
<result>
<!-- etc... -->
</result>
<result>
<!-- etc... -->
</result>
</GeocodeResponse>
Wie Sie im Inneren sehen können Ergebnis die Typ Element wiederholt sich ohne jede Typen Element, das XmlSerializer zu erwarten scheint (oder zumindest alle Dokumente und Beispiele, die ich gesehen habe). Das Gleiche gilt für die Adresse_Komponente .
Der Code, den ich derzeit habe, sieht etwa so aus:
[XmlRoot("GeocodeResponse")]
public class GeocodeResponse
{
public GeocodeResponse()
{
this.Results = new List<Result>();
}
[XmlElement("status")]
public string Status { get; set; }
[XmlArray("result")]
[XmlArrayItem("result", typeof(Result))]
public List<Result> Results { get; set; }
}
Jedes Mal, wenn ich versuche, die deserialisieren der XML bekomme ich null Einträge in meinem Ergebnis Liste .
Können Sie mir einen Vorschlag machen, wie ich dies zum Laufen bringen kann, da ich es derzeit nicht sehe?