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 :

Comment indenter ? [FAQ] [StAX]


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut Comment indenter ?
    Bonjour,

    Je voudrais savoir si il y a un moyen de formater automatiquement un XML avec Stax.

    J'ai essayé d'utilisdf, comme préconisé dans cet article , la staxs-utils mais j'obtiens toujours tout le code généré sur une seule ligne.

    Quelqu'un sait comment utiliser la stax-utils ou tout autre moyen d'avoir un xml bien indenté avec Stax ?

  2. #2
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Regardes du côté de Stax-Utils : https://stax-utils.dev.java.net/nona...ils/index.html

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut
    Comme je l'ai dit j'ai déjà regardé.

    En remplaçant mon writer de type XMLStreamWriter par un de type StAXStreamWriter, j'obtiens toujours la sortie sur une seule ligne.

    J'ai également essayé d'implémenter XMLStreamEventWriter cependant je n'ai pas réussi à l'ajouter à une factory (seul les types XMLEventWriter et XMLStreamWriter sont acceptés).

  4. #4
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Citation Envoyé par Pouss06 Voir le message
    Comme je l'ai dit j'ai déjà regardé.
    Oups, fatigué moi.
    En plus j'ai mis le lien vers la version avec Frames, ca aide pas : https://stax-utils.dev.java.net/nona...entWriter.html

    J'ai écris ce test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    		File url = new File("C:/test.xml");
     
    		XMLInputFactory factory = XMLInputFactory.newInstance();
    		XMLEventReader reader = factory.createXMLEventReader(new FileReader(url));
    		XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
    		XMLEventWriter writer = outputFactory.createXMLEventWriter(System.out);
    		writer = new IndentingXMLEventWriter(writer);
     
    		while(reader.hasNext()){
    		    writer.add(reader.nextEvent());
    		}
     
    		writer.close();
    Avec un xml sur une ligne dans "test.xml". Ca m'a bien affiché le xml formatté dans la console.

    Eric

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut
    Merci pour ta réponse

    Le problème c'est que j'utilise un XMLStreamWriter et non pas un XMLEventWriter. Or il n'existe pas de classe "IndentingXMLStreamWriter".

    Si vraiment on peut pas indenter avec un StreamWriter, je passerais à un EventWriter, même si ça n'a pas réellement de sens d'avoir un EventWriter dans mon code.

  6. #6
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Tu peux par exemple reprendre le code que je t'ai mis pour faire ce qu'on appelle la transformation identité.

    Bref tu rajoutes juste une nouvelle étape qui s'occupe de l'indentation, avec ce que tu produis actuellement en entrée de cette nouvelle étape.

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

Discussions similaires

  1. Comment indenter une variable dans un "onclick" ?
    Par shadow54 dans le forum jQuery
    Réponses: 2
    Dernier message: 10/02/2010, 20h03
  2. [FAQ]Comment indenter un fichier XML
    Par SfJ5Rpw8 dans le forum Vos Contributions VBScript
    Réponses: 4
    Dernier message: 23/10/2008, 11h04
  3. Comment indenter un flux XML avant affichage ?
    Par danyboy85 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 05/12/2006, 11h30
  4. [JDevelopper] Comment indenter automatiquement le code ??
    Par Bicnic dans le forum JDeveloper
    Réponses: 5
    Dernier message: 03/08/2004, 21h11

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