XmlSerializer und List
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!