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 String pour en faire un document XML [DOM]


Sujet :

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

  1. #1
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut parser une String pour en faire un document XML
    Bonjour,

    j'ai essayé le code ci dessous, mais document sort toujours à null... et je vois pas pourquoi...

    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
     
    import org.w3c.dom.*;
    ...
     
    String texte="..."; // contient un document XML valide
     
    Document document;
    DocumentBuilderFactory factory=
    	DocumentBuilderFactory.newInstance();
     
    	try {
    		ByteArrayInputStream stream=new ByteArrayInputStream(texte.getBytes()); 
     
    		DocumentBuilder builder = factory.newDocumentBuilder();
    		document = builder.parse(stream);
     
    	} catch (Exception ex) {
    		ex.printStackTrace();
    	}

  2. #2
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    Salut,
    Le constructeur ByteArrayInputStream ne copie pas le contenu dans l'inputstream :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      public ByteArrayInputStream(byte[] buf)Creates a ByteArrayInputStream so that it uses buf as its buffer array. The buffer array is not copied. The initial value of pos is 0 and the initial value of count is the length of buf.
    Parameters:
    buf - the input buffer.
    Cela provient de la javadoc.
    Donc ton inputstream est null.
    En revanche, j'ai regardé la classe DocumentBuilder, et il semblerait que tu puisses parser directement une String :
    As tu essayé ???

  3. #3
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Citation Envoyé par ZeKiD
    Salut,
    Le constructeur ByteArrayInputStream ne copie pas le contenu dans l'inputstream :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      public ByteArrayInputStream(byte[] buf)Creates a ByteArrayInputStream so that it uses buf as its buffer array. The buffer array is not copied. The initial value of pos is 0 and the initial value of count is the length of buf.
    Parameters:
    buf - the input buffer.
    Cela provient de la javadoc.
    Donc ton inputstream est null.
    En revanche, j'ai regardé la classe DocumentBuilder, et il semblerait que tu puisses parser directement une String :
    As tu essayé ???
    Desole rien a voir avec tes explications, cela indique juste que le buffer n'est pas copie et que le buffer original est utilise pour acceder aux donnees...

    Cette methode marche parfaitement avec un parser SAX par exemple, je pense que le probleme est ailleurs (probablement avec la verite ...)

    As-tu une exception d'affichee dans la console ?

    Dans la doc de parse:
    Parse the content of the given InputStream as an XML document and return a new DOM Document object.

    Parameters:
    is - InputStream containing the content to be parsed.
    Throws:
    java.io.IOException - If any IO errors occur.
    SAXException - If any parse errors occur.
    java.lang.IllegalArgumentException - If the InputStream is null
    Null part il est fait mention d'un possible retour a null ...
    Peux-tu verifier le XML avant d'appeler parse : Et eventuellement nous le montrer :

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  4. #4
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    Oui effectivement, il semblerait que bulbo est raison à ce sujet.
    En revanche, il demeure toujours la piste de db.parse(maChaine).
    A mon avis à tester.

  5. #5
    Membre habitué
    Avatar de Tifauv'
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 102
    Points : 129
    Points
    129
    Par défaut
    le parse(String) demande une URL et non le texte xml. J'y croyais, et puis non, il faut prendre les méthodes lourdes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String _xmlDocument = "...";
    Document document = builder.parse(new InputSource(new StringReader(_xmlDocument)));
    - Un pointeur, c'est comme un fusil chargé mal reglé avec la gachette qui s'appuie toute seule des fois.
    - Nan nan nan ça c'est le C. Un pointeur, c'est la même chose, mais avec le Quad Damage.

  6. #6
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    Désolé je ne savais pas merci pour l'info.
    Mais d'où vient la classe InputSource déjà ?

  7. #7
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    je recupere aucune exception, et le fichier XML que je parse est un fichier WSDL d'un web service. J'ai deja utilisé ce fichier pour faire appel au web service, donc je pense pas qu'il soit mal formée (en plus il est généré automatiquement)

    je vais essayer avec l'InputSource dès que je pourrais ;o)

  8. #8
    Membre habitué
    Avatar de Tifauv'
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 102
    Points : 129
    Points
    129
    Par défaut
    Citation Envoyé par ZeKiD
    Mais d'où vient la classe InputSource déjà ?
    Ca vient de SAX (même si on veut faire du DOM) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import org.xml.sax.InputSource
    Ca sert à rendre l'API 'indépendante' de la source du document (flux, chaîne ...).
    - Un pointeur, c'est comme un fusil chargé mal reglé avec la gachette qui s'appuie toute seule des fois.
    - Nan nan nan ça c'est le C. Un pointeur, c'est la même chose, mais avec le Quad Damage.

  9. #9
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    Bon ok merci bcp pour l'info !!!

  10. #10
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    bah, ca renvoi toujours null... mais ca me fait une exception cette fois ci.

    en gros l'exception est qu'il n'arrive pas a resoudre une url contenue dans le xml...

    enfin, c'est pas grave, je me suis débrouillé autrement (avec des expressions regulieres, mon but etait juste de remplacer un attribut mais je voulais faire ca proprement en parsant l'arbre ;o) , merci quand meme a tous ;o)

    Fladnag

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

Discussions similaires

  1. Probleme pour parser une String en Date
    Par DrTank dans le forum Langage
    Réponses: 3
    Dernier message: 04/05/2007, 19h19
  2. [XML] [string] parser une string XML
    Par fxp17 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 29/03/2006, 10h27
  3. [SGBD] Parser une variable pour mettre données dans bdd MySQL
    Par winnie82 dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 15/03/2006, 17h20
  4. Réponses: 2
    Dernier message: 14/10/2005, 17h05
  5. [DOM] Parser une string
    Par judi_kl dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 19/11/2004, 11h06

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