Bonjour,
Mon problème est le suivant : je reçois de la part d'un service REST un XML, qui contient une liste d'éléments.
J'aimerais la "déserializer". Mais je n'y arrive pas car la balise qui contient ma liste n'est pas comprise par la classe XmlSerializer.
Supposons que je reçoit une collection d'objet "Personne".
Le code XML renvoyé par le webservice est :
En gros, le webservice englobe par une balise au pluriel la collection renvoyée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?xml version="1.0" encoding="UTF-8"?> <Personnes> <Personne> <Nom>Toto1</Nom> </Personne> <Personne> <Nom>Toto2</Nom> </Personne> </Personnes>
Je ne sais pas comment définir un objet permettant de désérializer cela.
J'ai correctement généré une classe "Personne" grâce à xsd.exe et le xsd qui correspond.
J'essaye de désérializer grâce à ce code :
Mais cela ne marche pas. Lors de l'execution, cela lève une exception disant que la balise "Personnes" n'était pas attendu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 XmlSerializer xs = new XmlSerializer(typeof(Personne[])); // On déserialise une liste de Personnes Personne[] Liste_Personne; using (StreamReader rd = new StreamReader("2_Personnes.xml")) { Liste_Personne = xs.Deserialize(rd) as Personne[]; }
C'est logique mais je ne sais pas comment contourner ce problème.
Merci par avance.
Partager