IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Manipulation ODT content.xml Linux Windows


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Manipulation ODT content.xml Linux Windows
    Bonjour,

    je me heurte à un problème dont je n'arrive pas à concevoir la source.
    Dans un programme, j'exporte les données traitées dans un fichier odt. Pour cela, je charge un modèle de fichier dans une chaîne, je modifie la chaîne, puis j'écris cette chaîne dans un fichier content.xml ; l'étape suivante consiste à zipper ce content.xml avec les autres fichiers issus de la décompression de l'archive odt modèle, puis à renommer l'archive obtenue.
    La démarche fonctionne parfaitement sous linux, mais sous windows, des erreurs xml sont trouvées et l'archive crée est corrompue... Comment expliquer ces différences entre Windows et Linux ?
    En creusant plus loin, je me suis aperçu en testant le xml des fichiers obtenus de la décompression d'un fichier odt qu'ils comportaient tous des erreurs ; il semble que linux n'en tient pas compte, et que windows les détecte ...

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Quelles erreurs? Tu écris comment ton content.xml?

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bon, j'ai fait des essais de compression/décompression de fichiers odt sous linux et windows.
    Pour ces deux OS :
    - le fichier content.xml obtenu par la décompression : ouvert avec un navigateur (Firefox) pas de souci détecté ; avec un programme de validation xml, deux erreurs apparaissent :
    * "l'élément racine du document "office:document-content" doit correspondre à la racine DOCTYPE "null"".
    * "le document n'est pas valide : aucune grammaire détectée."
    Cependant, en recompressant l'ensemble des fichiers et en renommant en odt, on obtient un fichier sans erreur...

    Donc, retour à mon programme : en analysant un fichier content.xml créé par celui-ci sous Windows, j'obtiens l'erreur suivante " octet 2 de la séquence UTF-8 à 3 octets non valide". Pas de souci avec ceux crées sous Linux...

    Voici comment je passe ma chaîne en fichier "content.xml" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public void ecritFtext (String chaine, String nomFichiertxt) throws IOException{
     
    		try{
    			File ff=new File(nomFichiertxt); 
    			ff.createNewFile();
    			FileWriter ffw=new FileWriter(ff);
    			ffw.write(chaine);
    			ffw.write("\n"); 
    			ffw.close(); 
    			} catch (Exception e) {System.out.println("échec de la création de fichier");}
     
    	}
    Puis comment les fichiers sont compressés pour constituer le fichier odt
    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
    final int BUFFER = 2048;
    		byte data[] = new byte[BUFFER];
    		FileOutputStream dest= new FileOutputStream(chemin);
    		BufferedOutputStream buff = new BufferedOutputStream(dest);
    		ZipOutputStream out = new ZipOutputStream(buff);
    		out.setMethod(ZipOutputStream.DEFLATED);
    		out.setLevel(9);
    		String[] files = {"Configurations2/accelerator/current.xml","META-INF/manifest.xml",
    				"Thumbnails/thumbnail.png", "content.xml", "layout-cache", "manifest.rdf","meta.xml", 
    				"mimetype", "settings.xml", "styles.xml","Object 1/content.xml","Object 1/meta.xml","Object 1/styles.xml","ObjectReplacements/Object 1",
    				"Object 3/content.xml","Object 3/meta.xml","Object 3/styles.xml","ObjectReplacements/Object 3"};
    		for(int i=0; i<files.length; i++) {
    		    FileInputStream fi = new FileInputStream(files[i]);
    		    BufferedInputStream buffi = new BufferedInputStream(fi, BUFFER);
    		    ZipEntry entry= new ZipEntry(files[i]);
    		    out.putNextEntry(entry);
    		    int count;
    		    while((count = buffi.read(data, 0, BUFFER)) != -1) {
    		        out.write(data, 0, count);
    		    }
    		    out.closeEntry();
    		    buffi.close();
    		}
    		out.close();
    		}

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    on ne peux pas écrire des fichiers xml comme ça (enfin si on peux, mais c'est dangereux).

    Les fichiers xml commencent, en général, par une entête de déclaration d'encodage. Hors là je ne vois nulle part où tu précise cette déclaration d'encodage. Dans ta "chaine" surement, mais comme on ne vois pas comment elle est construite...

    Ensuite, to Writer qui écrit le fichier, il dois ouvrir le fichier avec le même encodeur que celui qui est déclaré dans l'entête xml, or là tu utilise l'encodeur par défaut de l'OS qui as toute les chances de ne pas correspondre. FileWriter malheureusement ne prend pas de paramètre d'encodage. Il faut utiliser FileOutputStream + OutputStreamWriter pour ça.

    Ton message d'erreur laisse entendre que ton fichier estdéclaré comme UTF-8 mais que l'encodeur utilisé est probablement un encodeur de la série des ISO-8859.

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    C'est bon, j'ai trouvé !
    Grâce au post suivant : http://www.developpez.net/forums/d78...ncode-utf-8-a/

    Il suffit de "forcer" l'encodage en UTF-8 pour que windows accepte mon content.xml.

  6. #6
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci Tchize, c'est effectivement de ce côté-là que mon code péchait.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Logiciel pr emulation d'autres OS ( linux, windows...)
    Par elitost dans le forum Autres Logiciels
    Réponses: 8
    Dernier message: 14/07/2005, 17h16
  2. snmp linux windows
    Par Aramis dans le forum Développement
    Réponses: 2
    Dernier message: 19/06/2005, 23h39
  3. Réponses: 13
    Dernier message: 13/03/2005, 20h56
  4. [xml]manipuler des données xml sous Oracle9i
    Par crazy dans le forum SQL
    Réponses: 7
    Dernier message: 28/02/2004, 11h40
  5. Les fichiers sous linux/windows
    Par Stessy dans le forum Linux
    Réponses: 5
    Dernier message: 05/12/2003, 09h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo