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 :

Analyse d'un flux XML


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Octobre 2007
    Messages : 27
    Par défaut Analyse d'un flux XML
    Bonjour. Je recherche comment extraire des informations d'un flux XML.

    En clair, j'ai un objet de type String contenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <REPONSE>
        <RESULTATdeREQUETE>
            <RESULTAT>
                <EXCEPTION>
                    <ADSU_CDERR>0</ADSU_CDERR>
                    <ADSU_LIBCOUR>Erreur servlet DEMATERIALISATION</ADSU_LIBCOUR>
                    <ADSU_LIBLONG>Erreur connection OnDemand</ADSU_LIBLONG>
                    <ADSU_CDGRAV>0</ADSU_CDGRAV>
                </EXCEPTION>
            </RESULTAT>
        </RESULTATdeREQUETE>
    </REPONSE>
    et je cherche comment récupérer :
    - l'existence de la balise EXCEPTION (car en cas de réponse positive, j'ai une autre balise <DCELEC>)
    - le contenu de la balise ADSU_CDERR

    Faut il utiliser des ordres de type substring (manipulation de chaine de caractères), ou bien existe t'il une classe particulière qui serait capable d'extraire des informations d'un chaine XML ?

    Merci d'avance

    KQMan

    PS : je suis en java 1.4

  2. #2
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Pour traiter les flux XML a mon avis il faudrait utiliser les parser.

    Tu peux utiliser jdom API avec le parser SAX par exemple.
    Le seul probleme il faut trouver les API compatibles avec ton java 1.4

  3. #3
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Sinon tu pourrais écrire le XSD correspondant au XML d'erreur et valider le XML entrant vis à vis de ce XSD..

    Un tuto pour XSD: http://gilles-chagnon.developpez.com...td-et-schemas/

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Par défaut
    Tu n'a jamais entendu parler de parser XML!!
    SAX, DOM te disent quelque chose? si ce n'est pas le cas t'a plein de tutoriel
    DOM est plus facile si ton document XML n'est pas très grand.
    A+

  5. #5
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Octobre 2007
    Messages : 27
    Par défaut
    Citation Envoyé par hibour Voir le message
    Tu n'a jamais entendu parler de parser XML!!
    SAX, DOM te disent quelque chose? si ce n'est pas le cas t'a plein de tutoriel
    DOM est plus facile si ton document XML n'est pas très grand.
    A+
    si, depuis 3 jours que je parcours le Net à ce propos, je vois beaucoup ce terme, mais comme tout le monde l'emploie et que personne ne l'explique, je ne voulais pas me hasarder à l'utiliser sans savoir l'expliquer exactement.

    J'ai un collègue qui m'a donc affranchi, en m'expliquant qu'on pouvait créer un objet (le DOM) permettant de naviguer dans les balises grace à ses méthodes (il m'a envoyé vers cette adresse pour que je m'informe : http://java.developpez.com/faq/xml/?page=dom )

    Par contre, je pèche encore dans la terminologie : qu'est ce qu'un element ? un attribut ?

    Pour mon cas, j'ai cru comprendre que ADSU_CDERR, par exemple, est un element, au même titre que EXCEPTION, qui est son parent. Mais je n'ai pas d'attribut... et d'ailleurs, je sais pas expliquer pourquoi il y a des attributs plutot que des elements ...

    De plus, je ne vois pas à quoi ça sert de naviguer d'un element à l'autre.. à moins qu'il n'y ait une visibilité réduite, qui ferait que, positionné sur un element, on ne connaisse que le parent ou le(s) enfant(s).. par exemple, dans mon cas, si je suis sur la racine (avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	DocumentBuilderFactory fabriqueDOM = DocumentBuilderFactory.newInstance();
    	DocumentBuilder constructeur = null; 
    	Element elt = null;
    	String s ="<?xml version=\"1.0\" ?><REPONSE><RESULTATdeREQUETE><RESULTAT><EXCEPTION><ADSU_CDERR>0</ADSU_CDERR><ADSU_LIBCOUR>Erreur servlet DEMATERIALISATION</ADSU_LIBCOUR><ADSU_LIBLONG>Erreur dans la recuperation de l idOD</ADSU_LIBLONG><ADSU_CDGRAV>0</ADSU_CDGRAV></EXCEPTION></RESULTAT></RESULTATdeREQUETE></REPONSE>";
    	InputStream stis = new StringBufferInputStream(s);
    	Document doc = (Document)constructeur.parse(stis);
    	Element racine = doc.getDocumentElement();
    ), je ne peux savoir q'une chose : c'est que j'ai un fils qui s'appelle RESULTATdeREQUETE, mais je ne sais pas qu'il a lui même un enfant RESULTAT... est ce bien ça ??

    Pour info, après 20 ans de COBOL, j'ai suivi une formation professionnelle en java de 5j il y a + de 2 ans. Depuis, j'ai fait un peu de Php et de html, mais sans avoir de formation, et du java, mais là pareil, sans présentation des DOMs et relations entre serveurs, ce qui fait que j'ai beaucoup de mal à prendre du recul, et que je suis incapable d'architecturer un projet dans cet environnement... donc je découvre ce que je dois apprendre au fur et à mesure que les problèmes se présentent à moi...

    donc merci beaucoup pour vos réponses !!

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Par défaut
    Avec DOM ton XML est transformé en un arbre. Chaque Noeud (Qui peut être un Element) connait tout ses fils (getChildNodes()) et les 2 noeuds au dessus et au dessous de lui (getNextSibling(), getPreviousSibling()) comme ça tu pourra naviguer partout à partir de la racine (Element se trouvant en haut de la hiérarchie).
    Un attribut et une information suplémentaire se trouvant à l'intérieur d'un Element comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <elementXXX attribut1="valeur1" attribut2="valeur2" >
    attribut1 est un attribut dont la valeur est valeur1
    Voilà avec un peu de pratique ces concepts paraiteront plus facile.
    A+

  7. #7
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    et je cherche comment récupérer :
    - l'existence de la balise EXCEPTION (car en cas de réponse positive, j'ai une autre balise <DCELEC>)
    - le contenu de la balise ADSU_CDERR
    Si tes fichiers xml ne sont pas grands tu peux utiliser API Dom sinon tu peux utiliser Jdom.

  8. #8
    Membre Expert
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Par défaut
    Bonjour,

    et si tu souhaite avoir une API portable, tu peut utiliser JAXP.

  9. #9
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Octobre 2007
    Messages : 27
    Par défaut
    Ok, merci pour toutes ces infos
    J'ai fini par comprendre le principe des noeuds, des elements, et des attributs.
    J'ai quand même eu un problème, résolu en rusant :
    dans un java (main sans interaction avec d'autres classes), j'avais accès à la méthode getTextContent pour un element, et dans un autre java, lié à beaucoup d'autres applications, j'ai eu 'méthode indéfinie'... j'ai pas compris pourquoi... pourtant, j'ai bien spécifié la classe org.w3c.dom.Element pour éviter toute interférence avec une autre classe... mais ça n'a rien changé..
    mais grace à une recherche internet (http://www.formation.jussieu.fr/~per...mozTocId684594), j'ai utilisé les instructions suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	elt = (Element) enfant3.getElementsByTagName("ADSU_LIBCOUR").item(0);
    	contenu_DOCUMENT = ((Text) elt.getFirstChild()).getData();
    et j'ai pu récupérer le texte d'un element.

    Encore merci de m'avoir consacré un peu de temps. A bientôt.

    KQMan

  10. #10
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    De souvenir le getTextContent est apparu en java 5. Donc tu as du développer sur du java 5 et essayer de la faire tourner sur du java 4 ou truc dans le genre.

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

Discussions similaires

  1. Get, Flux XML analyse et affichage en live
    Par Mobybic dans le forum Web & réseau
    Réponses: 12
    Dernier message: 28/02/2011, 07h53
  2. Réponses: 3
    Dernier message: 10/04/2007, 19h57
  3. probleme lors de l'analyse d'un flux xml sous asp
    Par jlassira dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 05/07/2005, 14h01
  4. [DOM] Comment créer des flux XML en java ?
    Par nean_j dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 27/04/2004, 12h00

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