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

API standards et tierces Java Discussion :

Quels classes utiliser pour remplacer des classes qui sont propriété de Sun


Sujet :

API standards et tierces Java

  1. #1
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut Quels classes utiliser pour remplacer des classes qui sont propriété de Sun
    Bonjour,

    je souhaite récupérer sous forme de chaine de caractères indentée un objet de type org.w3c.dom.Document.

    En cherchant sur le net, j'ai trouvé ce code là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    Properties OP =  OutputPropertiesFactory.getDefaultMethodProperties("xml");
    OP.setProperty(OutputKeys.METHOD,"xml");
    OP.setProperty(OutputKeys.INDENT,"yes");
    OP.setProperty(OutputKeys.ENCODING,"UTF-8");
    Serializer serializer = SerializerFactory.getSerializer (OP);
    serializer.setOutputStream(bos);
    serializer.asDOMSerializer().serialize(dom);
    //--- mon xml en chaine de caractères : 
    String s = new String( bos.toByteArray());
    Le problème c'est que les classes utilisées font partie du package com.sun.etc... et lors de la compilation, j'ai les erreurs suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    com.sun.org.apache.xml.internal.serializer.OutputPropertiesFactory is Sun proprietary API and may be removed in a future release
    com.sun.org.apache.xml.internal.serializer.Serializer is Sun proprietary API and may be removed in a future release
    com.sun.org.apache.xml.internal.serializer.SerializerFactory is Sun proprietary API and may be removed in a future release
    com.sun.org.apache.xml.internal.serializer.OutputPropertiesFactory is Sun proprietary API and may be removed in a future release
    com.sun.org.apache.xml.internal.serializer.Serializer is Sun proprietary API and may be removed in a future release
    com.sun.org.apache.xml.internal.serializer.SerializerFactory is Sun proprietary API and may be removed in a future release
    J'ai trouvé sur le forum cet doc :

    Citation Envoyé par adiGuba
    Les classes de ces packages sont utiliser par la JVM pour implémenter certaines fonctionnalité, et il ne faut pas les utiliser directement pour plusieurs raisons :
    • Elle n'existe pas dans les autres JVMs (IBM, Apple, etc.), et donc ton programme Java ne fonctionnera pas sur ces JVM...
    • Ces classes peuvent très bien évoluer ou disparaitre même de la JVM de Sun, et donc provoquer des plantages de ton application
    Donc ma question est la suivante :

    Comment récupérer une chaine de craractères à partir d'un objet de type org.w3c.dom.Document sans utiliser ces classes là.

    Merci d'avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Bonjour,

    Vous êtes parti dans la mauvaise direction

    Voici un bout de code qui vous redirigera sur la bonne voie:
    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
     
     
    import java.io.OutputStream;
     
    import javax.xml.transform.TransformerConfigurationException;
    import javax.xml.transform.TransformerException;
    import javax.xml.transform.Source;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.Result;
    import javax.xml.transform.stream.StreamResult;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
     
    import org.xml.sax.SAXParseException;
    import org.xml.sax.SAXException;
     
    import org.w3c.dom.Document;
     
    /**
       * This method writes a DOM document to a file
       * @param out
       * @param document
       */
      public static void writeXmlToFile(OutputStream out, Document document) {
        try {
          // Prepare the DOM document for writing
          Source source = new DOMSource(document);
     
          Result result = new StreamResult(out);
     
          // Write the DOM document to the file
          // Get Transformer
          Transformer xformer = TransformerFactory.newInstance().newTransformer();
          // Set here the properties of the output
          /* xformer.setProperty(); */
          // Write to a stream
          xformer.transform(source, result);
        } catch (TransformerConfigurationException e) {
          System.out.println("TransformerConfigurationException: " + e);
        } catch (TransformerException e) {
          System.out.println("TransformerException: " + e);
        }
      }

  3. #3
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Merci pour la réponse, je vais regarder cela dans la journée quand j'aurai 5 minutes. Je posterais ensuite pour confirmer ou non si cela résout mon problème.

    Bonne journée.

  4. #4
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    OK, ca fonctionne parfaitement.

    Merci de votre aide.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 09/02/2011, 10h15
  2. Quel langage utiliser pour saisir des numéros d'images
    Par uself dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 22/11/2007, 10h32
  3. Réponses: 3
    Dernier message: 05/04/2007, 11h56
  4. Réponses: 1
    Dernier message: 04/01/2006, 14h39
  5. quel outil utiliser pour defragmenter des TB ?
    Par falafel23 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 12/09/2005, 22h20

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