65 Stimmen

Deserialisierung in eine Liste ohne Containerelement in XML

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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X