Problème de sauvegarde/lecture de flux XML

Le
Gloops
Bonjour tout le monde,

Je suis en train de travailler sur un lecteur RSS, aussi j'ai voulu
enregistrer le flux dans un fichier xml.

Voici comment ça se passe :

xml.Load(cheminduflux);
fichier = XmlWriter.create(chemindufichier);
Xml.WriteTo(fichier);
fichier.Close();

J'obtiens bien un fichier XML, mais Internet Explorer 6 me dit que "Le
passage du codage actuel au codage spécifié n'est pas pris en charge.=

Erreur de traitement de la ressource "

J'ai dû ouvrir ça dans un éditeur de texte pour avoir une idée de=
ce
qu'il y avait dedans. J'ai retiré certaines balises au début, au suje=
t
de la cohérences desquelles j'avais quelques doutes, puis j'ai pu
afficher le résultat.

M'est avis qu'il y a une vis de pas trop bien serrée dans le mécanism=
e,
mais je n'ai aucune idée d'où, si quelqu'un en a sur le sujet elles
seront bienvenues. Je précise que si je copie l'adresse du flux dans la=

barre d'adresse, j'ai bien une page xml que IE sait afficher. C'est via
l'enregistreur xml de Visual Studio que les choses semblent se gâter.

Je pourrai bien entendu en dire plus sur ces balises que j'ai retirées,=

si tant est qu'à ce stade on ne me signale pas déjà une bêtise pl=
us
grosse que moi
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Martin CLAVREUIL
Le #12176521
Salut,

pouvez-vous poster ici le chemin du flux en question parce que en en
prenant un au hasard sur le net je n'ai aucun problème

Gloops a écrit :
Bonjour tout le monde,

Je suis en train de travailler sur un lecteur RSS, aussi j'ai voulu
enregistrer le flux dans un fichier xml.

Voici comment ça se passe :

xml.Load(cheminduflux);
fichier = XmlWriter.create(chemindufichier);
Xml.WriteTo(fichier);
fichier.Close();

J'obtiens bien un fichier XML, mais Internet Explorer 6 me dit que "Le
passage du codage actuel au codage spécifié n'est pas pris en charge.
Erreur de traitement de la ressource "

J'ai dû ouvrir ça dans un éditeur de texte pour avoir une idée de ce
qu'il y avait dedans. J'ai retiré certaines balises au début, au sujet
de la cohérences desquelles j'avais quelques doutes, puis j'ai pu
afficher le résultat.

M'est avis qu'il y a une vis de pas trop bien serrée dans le mécanisme,
mais je n'ai aucune idée d'où, si quelqu'un en a sur le sujet elles
seront bienvenues. Je précise que si je copie l'adresse du flux dans la
barre d'adresse, j'ai bien une page xml que IE sait afficher. C'est via
l'enregistreur xml de Visual Studio que les choses semblent se gâter.

Je pourrai bien entendu en dire plus sur ces balises que j'ai retirées,
si tant est qu'à ce stade on ne me signale pas déjà une bêtise plus
grosse que moi ...


Gloops
Le #12176461
Salut,

C'est vrai que je me suis dit après que j'aurais dû faire ça.

http://hyperlinkextractor.free.fr/rssfiles/google_france.xml

http://hyperlinkextractor.free.fr/rssfiles/google_monde.xml

La lecture des flux par le projet initial se passe bien, l'affichage du
xml dans Internet Explorer (en copiant l'adresse dans la barre
d'adresse) se passe bien, c'est par xml.WriteTo que j'ai des choses
bizarres.
_______________________________________________
Martin CLAVREUIL a écrit, le 23/09/2007 18:01 :
Salut,

pouvez-vous poster ici le chemin du flux en question parce que en en
prenant un au hasard sur le net je n'ai aucun problème



Martin CLAVREUIL
Le #12176451
Alors je confirme : je ne comprend pas. Le code suivant produit des
fichiers qui sont tous lisibles que ce soit pas écriture directe
(XmlDocumument gérant le filestream ou avec un filestream manuel).


static void Main(string[] args)
{
//Méthode 1 : OK
XmlDocument xdoc = new XmlDocument();

xdoc.Load("http://hyperlinkextractor.free.fr/rssfiles/google_france.xml");
xdoc.Save("C:\france.xml");
xdoc = new XmlDocument();

xdoc.Load("http://hyperlinkextractor.free.fr/rssfiles/google_monde.xml");
xdoc.Save("C:\monde.xml");

//Méthode 2 : OK
FileStream fichier = new FileStream("c:\france2.xml",
FileMode.Create, FileAccess.Write);
XmlDocument xdoc = new XmlDocument();

xdoc.Load("http://hyperlinkextractor.free.fr/rssfiles/google_france.xml");
xdoc.Save(fichier);
fichier.Flush();
fichier.Close();
}


Gloops a écrit :
Salut,

C'est vrai que je me suis dit après que j'aurais dû faire ça.

http://hyperlinkextractor.free.fr/rssfiles/google_france.xml

http://hyperlinkextractor.free.fr/rssfiles/google_monde.xml

La lecture des flux par le projet initial se passe bien, l'affichage du
xml dans Internet Explorer (en copiant l'adresse dans la barre
d'adresse) se passe bien, c'est par xml.WriteTo que j'ai des choses
bizarres.
_______________________________________________
Martin CLAVREUIL a écrit, le 23/09/2007 18:01 :
Salut,

pouvez-vous poster ici le chemin du flux en question parce que en en
prenant un au hasard sur le net je n'ai aucun problème






Gilles TOURREAU
Le #12176431
Le Sun, 23 Sep 2007 17:50:18 +0200, Gloops
Bonjour tout le monde,

Je suis en train de travailler sur un lecteur RSS, aussi j'ai voulu
enregistrer le flux dans un fichier xml.

Voici comment ça se passe :

xml.Load(cheminduflux);
fichier = XmlWriter.create(chemindufichier);
Xml.WriteTo(fichier);
fichier.Close();

J'obtiens bien un fichier XML, mais Internet Explorer 6 me dit que "Le
passage du codage actuel au codage spécifié n'est pas pris en charge.
Erreur de traitement de la ressource "

J'ai dû ouvrir ça dans un éditeur de texte pour avoir une idée de ce
qu'il y avait dedans. J'ai retiré certaines balises au début, au sujet
de la cohérences desquelles j'avais quelques doutes, puis j'ai pu
afficher le résultat.

M'est avis qu'il y a une vis de pas trop bien serrée dans le mécanisme,
mais je n'ai aucune idée d'où, si quelqu'un en a sur le sujet elles
seront bienvenues. Je précise que si je copie l'adresse du flux dans la
barre d'adresse, j'ai bien une page xml que IE sait afficher. C'est via
l'enregistreur xml de Visual Studio que les choses semblent se gâter.

Je pourrai bien entendu en dire plus sur ces balises que j'ai retirées,
si tant est qu'à ce stade on ne me signale pas déjà une bêtise plus
grosse que moi ...



Ajoutez avant le XmlWriter.Create() :

XmlWriterSettings xws;

xws = new XmlWriterSettings();
xws.Encoding = Encoding.GetEncoding("ISO-8859-1");

XmlWriter.Create(chemindufichier, xws);
....


Le mieux étant de récupérer l'encoding dans votre objet XmlDocument au
lieu de le mettre en dur...

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Gloops
Le #12176341
Gilles TOURREAU a écrit, le 24/09/2007 09:53 :
Je pourrai bien entendu en dire plus sur ces balises que j'ai
retirées, si tant est qu'à ce stade on ne me signale pas déjà une
bêtise plus grosse que moi ...





Bien fait de pas trop m'étaler sur la question, pas besoin ...


Ajoutez avant le XmlWriter.Create() :

XmlWriterSettings xws;

xws = new XmlWriterSettings();
xws.Encoding = Encoding.GetEncoding("ISO-8859-1");

XmlWriter.Create(chemindufichier, xws);
.....



Hourra, ça marche !
Merci.



Le mieux étant de récupérer l'encoding dans votre objet XmlDocume nt au
lieu de le mettre en dur...




Effectivement, il va quand même me rester ça à faire. En cherchant dans
les propriétés de l'objet xml, je vais bien trouver quelque chose.

On ne recommence pas l'an prochain, à changer de plate-forme ? ;)
Gloops
Le #12176331
Martin CLAVREUIL a écrit, le 24/09/2007 07:29 :
Alors je confirme : je ne comprend pas.



Heureusement, il y avait Gilles.

C'est quand même gentil d'avoir essayé.
Je suppose que le jeu de caractères qui est sélectionné par défau t sur
ta machine est précisément le ISO-8859-1, ce qui fait que ça ne t'a pas
posé de problème.

Un peu plus tard, je regarderai comment on sélectionne ça.
Jean BONBEUR
Le #12176251
si c'est l'encoding ecrit dans fait par le XmlWriterSettings, ou alors, creer un XmlWriter qui prend un
TextWriter dont l'Encoding est celui qui vous arrange. si c'est specifique
RSS, je ne connais pas assez l'usine server qui est derriere, esperons que
ça, ça suffise. Mais c'est quand meme un peu étonnant...
Gloops
Le #12176221
Maintenant que j'ai un peu progressé sur la question, je me rends compt e
que la rigueur n'est pas forcément toujours de mise chez l'éditeur du
flux, et qu'on peut très bien avoir deux jeux de caractères différe nts
dans le même texte. Bien entendu, avec ça, pour faire quelque chose q ui
s'aligne proprement, derrière, coton.

Il va falloir que je me documente sur les normes, histoire que je voie
si, en admettant qu'un éditeur veuille travailler proprement, ça lui est
possible. J'ai du mal à croire au contraire.

Enfin là il y a deux problèmes différents, à vrai dire. D'une par t le
fait d'avoir des déclarations homogènes pour que l'outil xml de Visua l
Studio puisse ne pas se mélanger les pinceaux (bon, là, maintenant ç a
marche), d'autre part afficher quelque chose de propre dans le résultat ,
notamment concernant les caractères accentués. En bref, y a du boulot ,
et pas que dans le champ de ce newsgroup.
___________________________________________
Jean BONBEUR a écrit, le 26/09/2007 08:22 :
si c'est l'encoding ecrit dans fait par le XmlWriterSettings, ou alors, creer un XmlWriter qui prend u n
TextWriter dont l'Encoding est celui qui vous arrange. si c'est specifi que
RSS, je ne connais pas assez l'usine server qui est derriere, esperons que
ça, ça suffise. Mais c'est quand meme un peu étonnant...




Publicité
Poster une réponse
Anonyme