XmlSerializer und List
Kann XmlSerializer
XML-Daten direkt in ein List<T>
deserialisieren? Lassen Sie uns dies anhand einer Beispiel-XML-Struktur und einer entsprechenden C#-Klasse untersuchen.
Beispiel-XML:
<code class="language-xml"><?xml version="1.0"?> <user_list> <user> <id>1</id> <name>Joe</name> </user> <user> <id>2</id> <name>John</name> </user> </user_list></code>
C#-Benutzerklasse:
<code class="language-csharp">public class User { [XmlElement("id")] public Int32 Id { get; set; } [XmlElement("name")] public String Name { get; set; } }</code>
Direkte Deserialisierung in List<User>
wird von XmlSerializer
nicht direkt unterstützt. Dies lässt sich jedoch mit einer einfachen Problemumgehung erreichen.
Lösung: Liste einpacken
Die Lösung besteht darin, eine Wrapper-Klasse zu erstellen, die List<User>
:
<code class="language-csharp">using System; using System.Collections.Generic; using System.Xml.Serialization; [XmlRoot("user_list")] public class UserListWrapper { public UserListWrapper() { Users = new List<User>(); } [XmlElement("user")] public List<User> Users { get; set; } }</code>
Durch die Verwendung dieser UserListWrapper
-Klasse wird die Deserialisierung unkompliziert. Das XmlSerializer
füllt die Users
-Liste im Wrapper auf. Nach der Deserialisierung können Sie dann über die Eigenschaft List<User>
des Wrappers auf Users
zugreifen. Anstelle der Liste innerhalb der Wrapper-Klasse könnte je nach Wunsch auch ein Array (User[]
) verwendet werden.
Das obige ist der detaillierte Inhalt vonKann XmlSerializer XML in eine Liste deserialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!