Deserialisieren in eine Liste ohne ein Containerelement in XML

In allen Beispielen, die ich gesehen habe, mit XmlSerializer jeder Zeit eine Liste oder ein array passiert, müssen Sie irgendeine Art von container element wie diesem:

<MyXml>
  <Things>
    <Thing>One</Thing>  
    <Thing>Two</Thing>  
    <Thing>Three</Thing>  
  </Things>
</MyXml>

Jedoch, das XML, das ich habe, hat kein container ähnlich Dinge oben. Es fängt gerade an, sich wiederholende Elemente. (Übrigens, die XML ist eigentlich aus der Google Geocode API)

So, ich habe XML, der folgendermaßen 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 sehen können, im inneren Ergebnis die Typ element wiederholt ohne Arten element, das XmlSerializer scheint zu erwarten (oder zumindest alle Dokumente und Beispiele, die ich gesehen habe). Das gleiche gilt für die _address_component_.

Den code, den ich momentan habe sieht ungefähr 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 Versuch zu Deserialisieren das XML bekomme ich null Einträge in meinem Ergebnis _List_.

Können Sie empfehlen, wie kann ich diese zu arbeiten, wie ich bin derzeit nicht zu sehen?

Kommentar zu dem Problem - Öffnen
Übrigens: exakt diese Frage wurde gepostet, gestern. stackoverflow.com/questions/5259911/... Es ist eine eingreifende Q zwischen ein und diese im Rahmen der xml-Serialisierung tag. Auch, es ist nicht das erste mal, es wurde schon gefragt/beantwortet. Kommentarautor: Cheeso
Gut, ich konnte ihn nicht finden! Ich suchte noch die erste, und klickte durch all die Vorschläge, wenn ich in meinem Frage-Titel. Kommentarautor: Colin Mackay

InformationsquelleAutor der Frage Colin Mackay | 2011-03-11

Schreibe einen Kommentar