Heim >Backend-Entwicklung >C++ >Wie deserialisiere ich XML mit XmlSerializer in eine Liste?

Wie deserialisiere ich XML mit XmlSerializer in eine Liste?

Barbara Streisand
Barbara StreisandOriginal
2025-01-13 07:59:57179Durchsuche

How to Deserialize XML into a List Using XmlSerializer?

XmlSerializer und ListDeserialisierung: Ein praktischer Leitfaden

Die XmlSerializer-Klasse bietet eine unkomplizierte Methode zum Deserialisieren von XML-Daten in verschiedene Datentypen, einschließlich Listen benutzerdefinierter Objekte. Dieser Leitfaden zeigt zwei Ansätze, um dies zu erreichen.

Methode 1: Verwendung einer Wrapper-Klasse

Um XML in ein List<User> zu deserialisieren, ist eine Wrapper-Klasse erforderlich, die als Wurzelelement innerhalb der XML-Struktur dient. Betrachten Sie die UserList Klasse:

<code class="language-csharp">[XmlRoot("user_list")]
public class UserList
{
    public UserList() { Items = new List<User>(); }
    [XmlElement("user")]
    public List<User> Items { get; set; }
}</code>

Diese Klasse kapselt eine Liste von User Objekten. Das Attribut [XmlRoot("user_list")] bezeichnet „user_list“ als Stammelement im XML. Das [XmlElement("user")]-Attribut ordnet jedes User-Objekt einem „Benutzer“-Element zu.

Als nächstes definieren Sie die User-Klasse:

<code class="language-csharp">public class User
{
    [XmlElement("id")]
    public Int32 Id { get; set; }

    [XmlElement("name")]
    public String Name { get; set; }
}</code>

Verwenden Sie abschließend XmlSerializer für die Deserialisierung:

<code class="language-csharp">XmlSerializer serializer = new XmlSerializer(typeof(UserList));
UserList userList = (UserList)serializer.Deserialize(streamOrStringReader);</code>

Ersetzen Sie streamOrStringReader durch Ihr Stream- oder StringReader-Objekt, das die XML-Daten enthält.

Methode 2: Direkte Array-Deserialisierung

Alternativ können Sie die Liste direkt in die User-Klasse einbetten, um den Prozess zu vereinfachen:

<code class="language-csharp">[XmlRoot("user_list")]
public class User
{
    public User[] Items { get; set; }
}</code>

Deserialisierung wird dann:

<code class="language-csharp">XmlSerializer serializer = new XmlSerializer(typeof(User));
User userArray = (User)serializer.Deserialize(streamOrStringReader);</code>

Die Items-Eigenschaft enthält jetzt ein Array von User-Objekten.

Die richtige Methode wählen

Der Wrapper-Klassen-Ansatz (Methode 1) bietet mehr Flexibilität, während die direkte Array-Methode (Methode 2) eine prägnantere Lösung bietet. Die beste Wahl hängt von der spezifischen Struktur Ihrer XML-Daten und Ihren persönlichen Vorlieben ab.

Das obige ist der detaillierte Inhalt vonWie deserialisiere ich XML mit XmlSerializer in eine Liste?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn