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 :

[Castor] Echappement des caractères <> dans un fichier XML généré par Castor XML


Sujet :

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

  1. #1
    mbinte
    Invité(e)
    Par défaut [Castor] Echappement des caractères <> dans un fichier XML généré par Castor XML
    Bonjour,

    Je cherche à savoir comment échapper les caractères <> lors du marshalling d'une grappe d'objet. Dans ma grappe d'objet, je valorise des attributs avec la valeur <![CDATA[data]]>. Mais après le marshalling je retrouve ceci dans mon fichier XML &lt;![CDATA[data]]&gt;.

    Comment échapper ce caractère ?

    Merci d'avance.
    Dernière modification par mlny84 ; 27/11/2011 à 18h58.

  2. #2
    mbinte
    Invité(e)
    Par défaut
    J'ai résolu mon problème à moitié.

    La solution permettant d'echapper ces caractères consiste à ajouter un ContentHandler et de lui spécifer que pour un certain nombre de noeuds il ne doit pas faire d'échappement. Bon je je pense qu'un exemple de code est plus parlant donc voici ce que j'ai fait :

    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
     
    // Format de sorite du template
    OutputFormat format = new OutputFormat(Method.XML, "UTF-8", true);
     
    // Noeud à mettre dans un CDATA
    String[] cdata = {"noeud1", "noeud2"};
    format.setCDataElements(cdata);
    format.setNonEscapingElements(cdata); 
     
     // Create the serializer
    XMLSerializer serializer = new XMLSerializer(output, format);
     
    // Handler du document
    ContentHandler handler = serializer.asContentHandler() ;
     
    Mapping mapping = new Mapping() ;
    InputStream inputStream = new FileInputStream(new File("myfile")) ;
    InputSource inpoutSource = new InputSource(inputStream) ;  
    mapping.loadMapping(inpoutSource) ;
     
    Marshaller marshaller = new Marshaller(handler);
    marshaller.setMapping(mapping);
    marshaller.marshal(MyObject);
    Voila ! Jusque la tout va bien !!

    Mon souci est que lorsque qu'il me génère mon fichier XML, je n'ai pas d'enveloppe CDATA autour des donnés des noeuds noeud1 et noeud2. Precisions, dans mon fichier de mapping Castor, ils sont déclarés soit en node="element" ou node="text".

    Si quelqun connait le comment du pourquoi....ben je suis preneur !!

    Merci !

  3. #3
    mbinte
    Invité(e)
    Par défaut
    Bon plus de précision sur le problème. Il semblerai qu'il y ai un bug avec l'utilisation du ContentHandler. En remplacant la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // Handler du document
    ContentHandler handler = serializer.asContentHandler() ;
    Par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // Handler du document
    DocumentHandler handler = serializer.asDocumentHandler() ;
    ça fonctionne corectement...le hic est que l'interface DocumentHandler est déprécié...donc comment faire...

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/10/2009, 10h33
  2. Echapper des caractères avec VBA pour requete SQL
    Par mpereg dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/04/2008, 03h41
  3. Remplacé des caractères UTF8 erronés dans plusieurs fichiers
    Par evaisse dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 31/03/2007, 23h18
  4. Réponses: 1
    Dernier message: 08/09/2006, 16h43
  5. pb:inserer des caractère en arabe dans une bd sql server
    Par l_faiza dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 24/12/2005, 14h02

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