Bonjour,

J'essai de deserialiser un document XML pour obtenir des classes. Je l'ai déjà fait auparavent sans probleme mais cette fois ci cela ne fonctionne pas. JE tourne en rond, si quelqu'un peut m'apporter sa lumière.

voici l'url du doc xml à déserialiser : http://ws.audioscrobbler.com/1.0/art...ca/similar.xml

voici mes classes pour le déserialiser :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using System.Net;
using System.IO;
 
namespace Xtream_ToolBox.Sensors {
    [XmlRoot("similarartists")]
    public class SimilarArtists {
        [XmlIgnore]
        public List<Artist> artists = new List<Artist>();
 
        // default constructor (required for serialisation)
        public SimilarArtists() {
        }
 
        public static SimilarArtists loadFromUrl(String url) {
            SimilarArtists similarArtists = null;
            Uri uri = new Uri(url);
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(SimilarArtists));
 
            try {
                WebResponse webResponse = HttpWebRequest.CreateDefault(uri).GetResponse();
                Stream stream = webResponse.GetResponseStream();
                similarArtists = (SimilarArtists)xmlSerializer.Deserialize(stream);
                stream.Close();
            } catch (Exception e) {
                Console.WriteLine(e.Message);
            }
 
            return similarArtists;
        }
 
 
        // getter for events list (convert to array for xml serialization)
        [XmlElement("artist")]
        public Artist[] artistArray {
            get {
                Artist[] artistArray = new Artist[artists.Count];
                artists.CopyTo(artistArray);
                return artistArray;
            }
            set {
                if (value == null) return;
                Artist[] artistArray = (Artist[])value;
                artists.Clear();
                foreach (Artist artist in artistArray) {
                    artists.Add(artist);
                }
            }
        }
    }
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
 
namespace Xtream_ToolBox.Sensors {
    public class Artist {
        [XmlAttribute("name")]
        public String name;
        [XmlAttribute("match")]
        public int match;
        [XmlAttribute("url")]
        public String url;
        [XmlAttribute("image_small")]
        public String imageSmall;
 
        // default constructor (required for serialisation)
        public Artist() {
        }
    }
}
j'obtiens bien une liste de 100 artists (conformément à ce qu'il y a dans le fichier xml) mais tout les champs sont null (pour les string) ou zero pour les int. Je ne vois pas ce qui cloche :-(