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 :

Génére un fichier XML avec SAX à partir d'un tableau de données [SAX]


Sujet :

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

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Génére un fichier XML avec SAX à partir d'un tableau de données
    Bonjour,

    C'est mon premier post... Voilà je cherche à créer un fichier XML en utilisant SAX. Mes données sont sous forme d'un tableau...

    J'ai lu beaucoup de sujets sur la lecture de fichier XML avec SAX mais rien au sujet de la création d'un fichier XML...

    Je me tourne vers vous afin de savoir si quelqu'un a des pistes à ce sujet...

    Merci d'avance,

    Cordialement,

    Franck

  2. #2
    mow
    mow est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 210
    Points : 166
    Points
    166
    Par défaut
    Salut,

    Je me demande si tu peux créer un fichier XML en utilisant SAX pour ma part j'utilise Dom4j que je trouve pas mal mais tu peux aussi utiliser JDom (http://cynober.developpez.com/tutoriel/java/xml/jdom/).

    Mow

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci de cette réponse... En fait, cette convertion est déja réalisée avec DOM... Pour des problèmes de perfs on me demande de refaire le même traitement avec SAX...

    Je suis actuellement là dessus : http://java.sun.com/j2ee/1.4/docs/tu...JAXPXSLT5.html

    Quelqu'un à t il des remarques à ce sujet?

    Merci,

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Points : 511
    Points
    511
    Par défaut
    Oui, je l'avais fait en implémentant un XmlReader que je passe à un transformer, il faut que je remette la main sur ma source...

    edit: le but étant de prendre le XMLHandler et de l'utiliser en sens inverse pour appeler startElement etc.

    Voilà un exemple:
    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
    26
    27
    28
    29
    30
    31
    32
    33
     
     public static class XReader implements XMLReader{
        ContentHandler contentHandler; 
        public void setContentHandler(ContentHandler a_arg0) {
          contentHandler = a_arg0;
        }
     
        public ContentHandler getContentHandler() {
          return contentHandler;
        }
     
        public void parse(InputSource a_arg0) throws IOException, SAXException {
          parse("");
     
        }
     
        public void parse(String a_arg0) throws IOException, SAXException {
          getContentHandler().startDocument();
          getContentHandler().startElement("a","b","c",null);
          getContentHandler().endElement("a","b","c");
          getContentHandler().endDocument();
        }
    // implémenter toutes les autres méthodes à {} pour la compil
     
    }
     
      public void example2() throws TransformerException{
        TransformerFactory factory = TransformerFactory.newInstance();
        Transformer analyseur = factory.newTransformer();
        XReader x = new XReader();
        Source xmlSrc = new SAXSource(x, new InputSource());
        analyseur.transform(xmlSrc, new StreamResult("c:\\tmp\\test2.xml") );
      }

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    La seul source trouvée sur internet concernant la création de fichier XML via SAX est le lien donné dans mon précédent post (XSLT)...

    Ma question : Est ce la seul manière d'utiliser SAX en création où en éxiste il d'autre?

    A defaut la version XSLT fonctionne très bien...

    Merci d'avance,

    Franck

  6. #6
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut
    SAX ne permet pas la création de fichier XML en fait. C'est une API de lecture uniquement.

    Bien sur il est possible de créer des classes qui vont générer des événements SAX à partir d'un tableau et de la, l'utiliser avec XSLT.
    Mais ce n'est pas approprié en fait.

    Si tu désire créer des fichiers XML à la volée ( un élement après l'autres, sans retour en arrière ), je te conseille vivement StAX, qui est une API qui ressemble à SAX, mais qui permet en plus la création de fichier XML.

    Je suis en train de finir un article à ce sujet, mais il en existe pas mal d'autre pour les non anglophobes
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci pour ces éclaircissements... Pour le moment mon transformer fonctionne bien... Je vais quand même regarder Stax par curiosité...Pourrais tu m'envoyer un MP lorsque ton article sera en ligne ça pourrait m'intéresser.

    Merci,

    Franck

  8. #8
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut
    Pas de soucis
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

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

Discussions similaires

  1. Parcourir un fichier XML avec SAX, où le placer ?
    Par Yerffoj21 dans le forum Android
    Réponses: 2
    Dernier message: 08/03/2012, 08h42
  2. generer fichier php pour obtenir fichier xml avec sax
    Par valmelissa dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 19/05/2011, 19h22
  3. Création d'un fichier XML avec SAX et XSLT
    Par Ioan dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 08/03/2011, 19h50
  4. Réponses: 1
    Dernier message: 08/06/2008, 20h05
  5. [SAX] Je dois générer un fichier XML avec SAX
    Par moi95 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 24/01/2007, 13h22

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