wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 1

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Supprimer le CRLF d'un fichier xml
Conversation (Résolue) : Supprimer le CRLF d'un fichier xml
23-07-2009 15:02:12  Supprimer le CRLF d'un fichier xml #1
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne
Salut a tous, c'est encore moi :)

Voila, j'ai un fichier de type TAP que je décode en fichier xml à l'aide d'un programme.
Je modifie le xml et veut le réencoder en TAP.
Seul probleme, je dois supprimer le "windows-specific line endings" (crlf) pour que le réencodage fonctionne.

Est ce que qq connait une méthode pour effectuer cette manip'.

Merci beaucoup.
23-07-2009 15:44:38  Re: Supprimer le CRLF d'un fichier xml #2
guyothomas (Membre)
Inscrit le : 05-06-2008
Messages: 66
Snippets: 0
Tutoriels: 0
Hors ligne
Salut Maspero,

Si il permet d'ouvrir ce type de fichier que je ne connais pas, Notepad++ (http://notepad-plus.sourceforge.net/fr/site.htm) permet de faire ce genre de chose.
Dans paramétrage > Préférences, onglet Nouveau document/répertoire, tu peux choisir l'encodage pour windows, Mac, ou Unix.

(d'ailleurs, Mac n'est pas sous unix??)

Bon courage en Roumanie,
Thomas.
23-07-2009 15:54:01  Re: Supprimer le CRLF d'un fichier xml #3
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne
Salut Thomas,

merci pour ta réponse si rapide. Effectivement je peux le faire via notepad ++, mais en fait, je crée un programme qui me permet d'éditer ces fichiers TAP, je veux donc que le décodage et le réencodage se fasse en arriere plan de mon programme et que cela soit totalement automatisé. Tu comprendra que l'utilisateur n'a pas envie d'enlever tous les retours chariots d'un xml de + de 5000 lignes :)...

Je vais tout de meme essayé a la main pour voir ce que ca donne.

Je crois que les macs sont sous les 3OS : MacOs , Windows et Unix..
D'ailleurs il parrait que le portage entre win et unix se fait super bien sur les macbook pro... Enfin c'est ce qu'on ma dit. Il parrait que ces derniers executent en meme temps 2 OS sans trop de ralentissement.


----------------------------------

J'ai testé avec Notepad++ et je vois rien de différent entre windows et unix :/

Dernière modification par maspero (23-07-2009 16:13:01)

23-07-2009 17:13:25  Re: Supprimer le CRLF d'un fichier xml #4
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
En fait, avec Notepad++, il faut que tu ouvres ton fichier, et que tu fasses "Format" -> "Convertir en format UNIX" pour que la conversion soir effective.

Je vais essayer de voir pour la conversion "en live" avec wxWidgets.

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
23-07-2009 17:19:52  Re: Supprimer le CRLF d'un fichier xml #5
guyothomas (Membre)
Inscrit le : 05-06-2008
Messages: 66
Snippets: 0
Tutoriels: 0
Hors ligne
Avec wxWidgets, il y a dans la classe wxStyledTextCtrl une fonction ConvertEOLs(int).
J'ai pas fouillé, mais tu pourrais sans doute mettre ton texte dans un de ces wxStyledTextCtrl puis exécuter la fonction et récupérer le texte...
puis le remettre dans ton fichier...

le lien vers la fonction dans la doc en ligne.
23-07-2009 18:02:29  Re: Supprimer le CRLF d'un fichier xml #6
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Juste une petite question : tu crées ton fichier xml avec quoi ?

Parce que d'après le test que je viens de faire, avec wxXmlDocument (et sa méthode "Save()"), les fins de lignes sont au format Unix même sous Windows.

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
23-07-2009 18:34:56  Re: Supprimer le CRLF d'un fichier xml #7
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne
En fait avec un convertisseur TAP->XML. et ensuite je le modifie avec tinyXML qui est mieux que wxXML je trouve..

et ensuite je rajoute du texte dedans en tant que wxTextFile :)
Je sais c'est le bordel mais à la fin le fichier est un xml aux normes.
Seul probleme, il est pas au format unix

Je teste le convertisseur de notepad. Merci

---------------------------------

Notepad... Pas de difference! Je ne comprend pas. J'ai demandé au programmeur qui a concu le
convertisseur TAP->XML XML->TAP pourquoi ca recodait pas et c'est lui qui m'a dit que je rajoutais des CRLF... mais j'en vois pas. Ca se présente comment les retours chariots windows sous unix??

Dernière modification par maspero (23-07-2009 18:38:30)

23-07-2009 20:53:50  Re: Supprimer le CRLF d'un fichier xml #8
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Pour voir la différence, dans Notepad++, passes en affichage Hexa (je ne sais plus si le plugin HexEditor est présent par défaut ou si je l'ai rajouté).
Les fins de lignes sous Windows sont matérialisées par deux caractères : 0x0d 0x0a (les fameux Cr Lf).
Sous Unix, il n'y a que le caractère Lf : 0x0a.

De toute façon, pour ton problème, il faudra sans doute convertir le fichier après qu'il soit créé (le relire et le ré-écrire avec les bons caractères de fins de ligne).

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
23-07-2009 21:13:39  Re: Supprimer le CRLF d'un fichier xml #9
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Bon, voici une méthode pour faire la conversion :

- Tu ouvres le fichier à traduire avec un wxFileInputStream
- Tu crées un wxTextInputStream à partir de ce wxFileInputStream
- Tu crées un nouveau fichier avec un wxFileOutputStream
- Tu crées un wxTextOutputStream à partir de ce wxFileOutputStream
- Tu n'oublies pas de passer le bon paramètre pour les fins de lignes au wxTextOutputStream
- Tu envoies au wxTextOutputStream toutes les lignes lues depuis le wxTextInputStream

Voici en clair ce que ça donne :

Code wxWidgets:

// Ouverture du fichier à traduire avec un wxFileInputStream
wxFileInputStream f_in(_T("original.xml"));
// Création d'un wxTextInputStream à partir du wxFileInputStream
wxTextInputStream t_in(f_in);
// Création du fichier final avec un wxFileOutputStream
wxFileOutputStream f_out(_T("final.xml"));
// Création d'un wxTextOutputStream à partir du wxFileOutputStream
// Avec le paramètre permettant de spécifier le type de retours chariots que l'on veut
wxTextOutputStream t_out(f_out, wxEOL_UNIX);
// Pour forcer les retours chariots Windows, il aurait fallu mettre :
// wxTextOutputStream t_out(f_out, wxEOL_DOS);
 
// On lit toutes les lignes du fichier source
// et on les passe au fichier destination
while (!f_in.Eof())
{
    t_out << t_in.ReadLine() << _T("\n");
}


Avec ça, plus de problème : tu maitrises les retours chariots.

D'ailleurs, ça mérite un petit snippet, ça... ;)

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
29-07-2009 09:23:58  Re: Supprimer le CRLF d'un fichier xml #10
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne
comme toujours c'est nickel!! MERCI!
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Supprimer le CRLF d'un fichier xml