Bonjour,
Après 3 heures de recherches, je demande la pitié....
j'utilise le service gratuit : http://www.webservicex.net/globalweather.asmx
Le résultat est le suivant (type string) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?xml version="1.0" encoding="utf-16"?> <CurrentWeather> <Location>Quebec, Que, Canada (CYQB) 46-48N 071-23W 74M</Location> <Time>Jun 17, 2008 - 12:00 PM EDT / 2008.06.17 1600 UTC</Time> <Wind> from the E (090 degrees) at 12 MPH (10 KT):0</Wind> <Visibility> 15 mile(s):0</Visibility> <SkyConditions> mostly cloudy</SkyConditions> <Temperature> 64 F (18 C)</Temperature> <DewPoint> 59 F (15 C)</DewPoint> <RelativeHumidity> 82%</RelativeHumidity> <Pressure> 29.65 in. Hg (1004 hPa)</Pressure> <Status>Success</Status> </CurrentWeather>
Je désire Sérializer le xml dans l'object suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public class CurrentWeather { public string Location; public string Time; public string Wind; public string Visibility; public string SkyConditions; public string Temperature; public string Status; public string Pressure; public string DewPoint; public string RelativeHumidity; }
Voici mon code de la sérialization :
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 private void button1_Click(object sender, EventArgs e) { Weather.GlobalWeatherSoapClient serv = new WindowsFormsApplication1.Weather.GlobalWeatherSoapClient(); string txtXml = serv.GetWeather("Quebec", "Canada"); txtXml = txtXml.Replace("\n", Environment.NewLine); Byte[] bytes = System.Text.Encoding.ASCII.GetBytes(txtXml); MemoryStream ms = new MemoryStream(bytes); XmlSerializer serialiseur = new XmlSerializer(typeof(CurrentWeather)); CurrentWeather myclass; // Erreur obtenu : Il existe une erreur dans le document XML (0, 0). myclass = (CurrentWeather)serialiseur.Deserialize((Stream) ms); ms.Close(); }
Si j'enregistre le contenu XML dans un fichier avec un StreamWrite et que je charge à partir d'un StreadReader c'est ok. Mais directement par la mémoire par StreamMemory, cela échoue.
Il y a donc, une mauvais utilisation de ma part du MemoryStream.
Quelqu'un sait comment dépanner ce problème?
s.v.p. et merci pour votre attention.
Jimmy le débutant.
(si vous lisez bien la météo de Québec, c'est la grande averse de pluie).
Partager