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 :

Parser une variable de type XML


Sujet :

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

  1. #1
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2005
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 246
    Par défaut Parser une variable de type XML
    Bonjour,

    Après de longues lectures sur l'API SAX, je constate qu'elle fonctionne seulement avec des fichiers .xml.
    Je voulais utiliser cette API pour parser des variables de type SOAPMessage (donc, document XML), que je voulais parser pour récupérer les données.

    Qui peut me donner une idée ?

  2. #2
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Par défaut
    J'utilise plutot l'api JDOM. Je suppose que c'est du même tonneau, et tu dois pouvoir accéder à des documents SOAP en jonglant avec les "Streams".

    Par exemple : parse(InputSource is, DefaultHandler dh)
    Et il faut t'arranger pour transformer ton document SOAP en InputSource correcte. Je suppose que ca fonctionne comme cela.

  3. #3
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2005
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 246
    Par défaut
    S'il vous plait, pouvez-vous me donner des indications sur InputStream ?

  4. #4
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Par défaut
    Pour ca, il n'y a pas de miracles, il faut un bouquin. Developpez en Java, dans la collection Wrox est très bien. Mais c'est clairement pas dans un forum qu'on pourra expliquer ca facilement.
    C'est un peu abstrait en fait

  5. #5
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2005
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 246
    Par défaut
    Ok, c'est compris. Est il possible de voir une de vos exemples ? car à présent je n'ai pu voir une literature sur parse(InputSource is, DefaultHandler dh).

    merci.

  6. #6
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Par défaut
    En vrac, avec JDOM, et non SAX. this represente un Document.

    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
     
    public boolean save() throws FileNotFoundException, IOException {
            File f = new File(this.getPath());
            try {
                if (!f.exists())
                f.createNewFile();
            } catch (Exception e) {
                robusta.list.Console.erreur("", "Erreur dans XsDocument.save() - file :"+f.getPath());
                e.printStackTrace();
            }
     
     
            XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
            FileOutputStream fos=new FileOutputStream(f);
            sortie.output(this, fos);
            fos.close();
            f=null;
            return true;
     
        }

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
     
     */
        public String transform(String xslPath) throws IOException {
     
            assert xslPath != null;
            assert this.path != null;
     
            String htmlPath = this.path.replace(".xml", ".html");
     
            /* Construction de la source d'entrée : à partir du document actuel */
            StringWriter sw = new StringWriter();
            org.jdom.output.XMLOutputter xmlOut = new org.jdom.output.XMLOutputter(Format.getPrettyFormat());
            xmlOut.output(this, sw);
            StringReader srStreamSource = new StringReader(sw.toString());
            Source xmlSource = new javax.xml.transform.stream.StreamSource(srStreamSource);
     
            StringWriter swResultStream = new StringWriter();
     
            try {
     
     
     
                // 1. Instantiate a TransformerFactory.
                javax.xml.transform.TransformerFactory tFactory = javax.xml.transform.TransformerFactory.newInstance();
     
    // 2. Use the TransformerFactory to process the stylesheet Source and
    //    generate a Transformer.
                javax.xml.transform.Transformer transformer = tFactory.newTransformer(new javax.xml.transform.stream.StreamSource(xslPath));
     
    // 3. Use the Transformer to transform an XML Source and send the
    //    output to a Result object.
                transformer.transform(
                        //new javax.xml.transform.stream.StreamSource(this.path),
                        new javax.xml.transform.stream.StreamSource(srStreamSource),
                        //new javax.xml.transform.stream.StreamResult(new java.io.FileOutputStream(htmlPath))
                        new javax.xml.transform.stream.StreamResult(swResultStream));
     
     
            } catch (TransformerException ex) {
                Logger.getLogger(TestXsl.class.getName()).log(Level.SEVERE, null, ex);
                return ex.getMessage();
            }
      StringBuilder sb = new StringBuilder();
            sb.append(swResultStream.getBuffer());
     
     
             //Metre 
            return sb.toString();
     
     
     
        }

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

Discussions similaires

  1. [C++/CLI] Libérer une variable du type cli::array
    Par ekinox17 dans le forum C++/CLI
    Réponses: 2
    Dernier message: 25/01/2006, 09h16
  2. Réponses: 1
    Dernier message: 21/12/2005, 19h08
  3. Réponses: 3
    Dernier message: 28/07/2005, 21h30
  4. affecter une variable de type stringstream
    Par sorari dans le forum SL & STL
    Réponses: 3
    Dernier message: 24/03/2005, 11h14
  5. Ajouter a une variable de type string, un entier
    Par Little-Freud dans le forum SL & STL
    Réponses: 12
    Dernier message: 05/03/2005, 19h33

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