Bonjour,
Je veux savoir comment on peut récupérer un document xml depuis une URL??
Qcq peut m'aider??
Merci d'avance.
Bonjour,
Je veux savoir comment on peut récupérer un document xml depuis une URL??
Qcq peut m'aider??
Merci d'avance.
Bonjour,
Une recherche dans MSDN et voilà : http://msdn.microsoft.com/en-us/libr...tresponse.aspx
Tu vas récupérer une réponse qu'importe le contenu. Toi tu sais que c'est de l'xml, donc il faudra l'interpréter comme tel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 WebClient wc = new WebClient(); string xml = wc.DownloadString(url);
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Bonjour,
Merci bien pour vos réponses et votre aide
Dans mon appli, je récupère le flux XML depuis la réponse de la requête HTTP.
Mon problème, c'est dans la partie décodage du flux XML reçu, il contient des balises dont le contenu contient des caractères spéciaux, voici un exemple:Ces balises causes des erreurs lors de la lecture du flux, j'ai essayé de faire le décodage et le chargement du flux comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part <url>http://www1.euro.dell.com/content/default.aspx?c=fr&l=en&s=dhs</url>
Mais lorsque j'exécute le programme, il m'indique qu'il y a une erreur de lecture des balises que j'ai décrit ci dessus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 string fluxXML = HttpUtility.HtmlDecode(IEModule.EnvoieRequeteHttpPost(url)); xdoc.LoadXml(fluxXML);
Pouvez vous m'aider??![]()
Ben si le XML contient des caractères interdits, ce n'est pas un document XML valide... Ici en l'occurence le caractère "&" devrait être remplacé par "&". Si tu peux, arrange-toi avec ceux qui ont généré ce fichier pour qu'il ne contienne pas de caractères interdits. Sinon il n'y a pas vraiment de solution simple...
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Slt Thomas ,
Merci bien pr ta réponse![]()
Bonjour a tous,
J'ai trouvé la solution à mon prob
:
il suffit juste de modifier le caractère & par & à l'aide la fonction Replace de la classe string. Voici ce que j'ai fait:
@+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 string fluxXML = HttpUtility.HtmlDecode(IEModule.EnvoieRequeteHttpPost(url)); string fluxResultat = fluxXML.Replace("&", "&"); xdoc.LoadXml(fluxResultat);![]()
Euh... pourquoi tu fais un HTMLDecode ?
C'est pas du HTML, c'est du XML. Et c'est pour ça que tu te retrouves avec "&" à la place de "&".
De toutes façons, le remplacement n'est pas une bonne solution : qu'est-ce qui se passe si tu as déjà des trucs genre "<" ou "&" dans le document ? ça va les remplacer par "&lt;" et "&amp;", ce qui va foutre en l'air le contenu du document...
Fais juste comme ça et ça devrait marcher :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 string fluxXML = IEModule.EnvoieRequeteHttpPost(url); xdoc.LoadXml(fluxResultat);
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
ah, j'ai oublié de supprimer le décodage HTML dans ma réponse précédente
je l'ai supprimé dans le code, j'ai testé et ça marche
Mais, ta remarque est intéressante, je doit opter a une solution plus rigide
.
Pour le bout de code que tu m'as proposé, ça ne marche pas, je rencontre le problème du caractère "&"
t'as d'autres solutions??![]()
Y a quoi dans ta méthode EnvoieRequeteHttpPost ? Tu ferais pas déjà un HtmlDecode là-dedans ?
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
non, je ne fais pas un décodage au niveau de cette fonction.
le traitement est le suivant: j'exécute la requête et je fait la lecture de la réponse.
voici ma fonction:
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 public static string EnvoieRequeteHttpPost(string URL) { string reponse = ""; StreamReader sr = null; HttpWebResponse reponseReq = null; try { HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(URL); req.ContentType = "application/x-www-form-urlencoded"; req.Method = "POST"; reponseReq = (HttpWebResponse)req.GetResponse(); if (reponseReq != null) { sr = new System.IO.StreamReader(reponseReq.GetResponseStream()); reponse = sr.ReadToEnd().Trim(); } } catch (Exception ex) { } finally { if (reponseReq != null) { reponseReq.Close(); } if (sr != null) { sr.Close(); sr.Dispose(); } } return reponse; }
Bizarre
A priori ça veut dire que le XML contient vraiment ces caractères... tu as essayé de le récupérer dans un navigateur pour vérifier ?
Dans ces conditions je ne vois pas d'autre solution que le remplacement, mais c'est vraiment pas propre, et ça risque de foutre en l'air le contenu. Il y a peut-être moyen de faire un peu mieux avec des expressions régulières, mais c'est pas facile
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
oui, j'ai vérifié le contenu XML récupéré dans la réponse de la requête, et il contient ces caractères (exemple de balises de ce flux: <url>http://www1.euro.dell.com/content/default.aspx?c=fr&l=en&s=dhs</url>)
![]()
Partager