Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème de sauvegarde/lecture de flux XML

8 réponses
Avatar
Gloops
Bonjour tout le monde,

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

Voici comment =E7a se passe :

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

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

J'ai d=FB ouvrir =E7a dans un =E9diteur de texte pour avoir une id=E9e de=
ce=20
qu'il y avait dedans. J'ai retir=E9 certaines balises au d=E9but, au suje=
t=20
de la coh=E9rences desquelles j'avais quelques doutes, puis j'ai pu=20
afficher le r=E9sultat.

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

Je pourrai bien entendu en dire plus sur ces balises que j'ai retir=E9es,=
=20
si tant est qu'=E0 ce stade on ne me signale pas d=E9j=E0 une b=EAtise pl=
us=20
grosse que moi ...

8 réponses

Avatar
Martin CLAVREUIL
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 ...


Avatar
Gloops
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



Avatar
Martin CLAVREUIL
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






Avatar
Gilles TOURREAU
Le Sun, 23 Sep 2007 17:50:18 +0200, 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 ...



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
Avatar
Gloops
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 ? ;)
Avatar
Gloops
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.
Avatar
Jean BONBEUR
si c'est l'encoding ecrit dans <?xml version="1.0" encodin="utf-8"?>, ça se
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...
Avatar
Gloops
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 <?xml version="1.0" encodin="utf-8"? >, ça se
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...