Bitte helfen Sie mir, ein Modell für die Deserialisierung von XML mit mehreren Tags mit demselben Namen, aber unterschiedlichen Inhalten zu erstellen.XML-Deserialisierung mit mehreren Elementen mit demselben Namen, aber anderem Inhalt
<?xml version="1.0" encoding="utf-16"?>
<found>
<prefixes>
<prefix name="Name1">Val1</prefix>
<prefix name="Name2">Val2</prefix>
</prefixes>
<objects>
<object handle="0">
<User>
<familyName>Family</familyName>
<givenName>Given1</givenName>
</User>
</object>
<object handle="0">
<User>
<familyName>Family2</familyName>
<givenName>Given2</givenName>
</User>
</object>
</objects>
<objects>
<object handle="0">
<User>
<familyName>Family3</familyName>
<givenName>Given3</givenName>
</User>
</object>
<object handle="0">
<User>
<familyName>Family4</familyName>
<givenName>Given4</givenName>
</User>
</object>
</objects>
Diese XML enthält 2 Sammlung <objects>
in Tag enthalten. Für Debug-Zwecke habe ich den gleichen Inhalt für beide <objects>
Tags verwendet, aber in Wirklichkeit werden sie unterschiedlich sein. Darüber hinaus könnte sich der Inhalt jeder dieser Sammlungen ändern, aber die Struktur des Dokuments ist dieselbe: Sie enthält eine Sammlung von Präfixen und 2 Sammlungen von Objekten.
Hier sind Objekte Daten verwendet zur Serialisierung/Deserialisierung dieses xml:
[XmlRoot(ElementName = "found", IsNullable = true)]
public class UserProfileDto
{
[XmlArray("prefixes", Order = 0)]
[XmlArrayItem("prefix", IsNullable = false)]
public PrefixDto [] Prefixes { get; set; }
[XmlArray("objects", Order = 1)]
[XmlArrayItem(ElementName = "object", Type = typeof(ObjectDto), IsNullable = false)]
public ObjectDto[] Objects { get; set; }
[XmlArray("objects", Order = 2)]
[XmlArrayItem(ElementName = "object", Type = typeof(ObjectDto), IsNullable = false)]
public ObjectDto[] AnotherObjects { get; set; }
}
public class PrefixDto
{
[XmlAttribute("name")]
public string Name { get; set; }
[XmlText]
public string Value { get; set; }
}
public class ObjectDto
{
[XmlElement("User")]
public UserDto User { get; set; }
}
[Serializable]
public class UserDto
{
[XmlElement("familyName")]
public string FamilyName { get; set; }
[XmlElement("givenName")]
public string GivenName { get; set; }
}
Das Problem ist, - dass die Serialisierung arbeitet mit dieser Modellklasse in Ordnung, aber wenn Deserialisieren Eigenschaft AnotherObjects
ist immer null. Eine weitere seltsame Sache - ist, dass die Eigenschaft Objects
(in der Klasse UserProfileDto
) mit Daten aus dem letzten Element <object>
gefüllt ist.
Bitte helfen Sie mit dieser Deserialisierung umzugehen.
Wenn Sie Elemente mit dem gleichen Namen, aber unterschiedliche Objekte hinter ihnen, können Sie Ihre eigene Serialisierung/deseralizaton Methoden nutzen könnten. Die Verwendung von XElement könnte Ihnen helfen. – KamikyIT
Die XML-Datei, die Sie eingereicht haben, hat den gleichen Inhalt. Deine Frage ergibt also keinen Sinn. Zeige XML mit anderem Inhalt, dann reden wir. –
Alexander, Xml ist korrigiert. Ich muss genau dieses XML deserialisieren. Dieses XML-Dokument stellt eine Liste von Präfixen und 2 Listen derselben Objekte dar. Die Herausforderung besteht darin, dass 2 Tags von verschiedene Bedeutungen haben, z. Das erste Tag repräsentiert die Liste der regulären Benutzer und die zweite eine Liste der Gruppenmanager –
Valentine