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

Format d'échange (XML, JSON...) Java Discussion :

Caractères chinois dans fichier XML


Sujet :

Format d'échange (XML, JSON...) Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 18
    Par défaut Caractères chinois dans fichier XML
    Bonsoir,

    Mon problème est le suivant :

    Je génère un fichier xml qui peut contenir des caractères chinois que je dois transformer en document hml via une xsl.

    J'utilise la librairie DOM4J mais au moment de la transformation xsl, j'ai cette exception :

    net.sf.saxon.trans.XPathException: Illegal HTML character: decimal 151

    J'ai bien essayé de changer l'encoding du fichier xml mais je ne trouve pas la solution.

    Pouvez-vous m'aider ?

    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Par défaut
    L'erreur peut provenir de beaucoup de raisons differentes, as tu le fichier XSD correspondant à ton fichier xml ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 18
    Par défaut
    Tu ne veux pas dire XSL ?

    Je n'ai pas de fichier XSD, je ne valide pas mon fichier XML, il est temporaire pour ensuite le transformer en HTML via une feuille XSL.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Il y a sûrement confusion dans les charsets, mais où, c'est bien le problème.

    Il faudrait faire un tout petit exemple qui illustre le problème, et nous montrer cet exemple, en entier. Avec le code qui génère le XML temporaire, et la XSL employée.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 18
    Par défaut
    Voilà plus de détails :

    En-tête fichier XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?xml version="1.0" encoding="UTF-8"?>
    Portion en chinois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <note>
    TEST 6: ��好
    TEST 5: ��好
    TEST 2: ��好
    TEST 4: ��好
    TEST 3: ��好
    TEST 1: ��好
    TEST 7: ��好
    </note>
    En-tête fichier XSL (transformation en HTML)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="html" />
    Portion générant l''exception (en voulante lire le noeud note plus haut)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <td>
    	<pre>
    		<xsl:value-of select="note"/>
    	</pre>
    </td>
    Ecriture du fichier xml sur le disque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    FileOutputStream fos = new FileOutputStream(file);
    OutputFormat format = new OutputFormat("\t", true);
    XMLWriter writer = new XMLWriter(fos, format);
    writer.write(document);
    writer.flush();
    writer.close();
    Transformation XSL : (API native Java) :
    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
     
    Source source = this.xmlSource;
    public void transform(LinkedList<File> xslFiles, Map<String, Object> args) throws FatalException {
    	Source source = this.xmlSource;
    	for (File xslFile : xslFiles) {
    	    this.charArrayWriter = new CharArrayWriter();
    	    Result result = new StreamResult(this.charArrayWriter);
    	    Source xslSource = new StreamSource(xslFile);
    	    try {
    		Transformer transformer = TransformerFactoryImpl.newInstance().newTransformer(xslSource);
    		for (Entry<String, Object> entry : args.entrySet())
    		    transformer.setParameter(entry.getKey(), args.get(entry.getKey()));
    		transformer.transform(source, result);
    	    } catch (TransformerException e) {
    		throw new FatalException(e);
    	    }
    	    Reader reader = new CharArrayReader(this.charArrayWriter.toCharArray());
    	    source = new StreamSource(reader);
    	}
    }
    Remarque : j'ai déjà ajouté un encoding dans l'objet OutputFormat dont utf-8 mais ça ne fonctionne pas

    Merci de votre aide

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    J'ai dit un tout petit exemple, oui, mais complet. Je copie les fichiers dans mon Eclipse, je clique sur run et je vois ce qui se passe.

    Avec ce qu'on voit là, j'accuserais probablement la construction de this.xmlSource
    Mais bon, c'est juste l'hypothèse la plus probable.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [Batch] Remplacer chaine de caractère dans fichier xml
    Par meumeu73.1 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 27/09/2011, 08h36
  2. Caractères spéciaux dans fichier XML
    Par Kembali dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 02/02/2011, 10h35
  3. Caractère parasite dans fichier XML avec XMLEncoder
    Par TOPGUN89 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 08/07/2010, 10h09
  4. PBM Ecriture caractère spécial dans fichier XML
    Par Le Grand Habchkleu dans le forum VBScript
    Réponses: 1
    Dernier message: 14/09/2009, 11h14
  5. [Débutant]Caractères chinois dans un fichier.
    Par angearael dans le forum Langage
    Réponses: 5
    Dernier message: 04/01/2007, 13h54

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