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 :

Java - Parcourir une réponse SOAP : Fichier XML avec de nombreux niveau


Sujet :

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

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2013
    Messages : 1
    Par défaut Java - Parcourir une réponse SOAP : Fichier XML avec de nombreux niveau
    Bonjour à tous,

    Je souhaiterai parcourir tous les nœuds/niveau de l'arborescence de la réponse SOAP que vous trouverez ci-dessous.
    Je présume qu'il me faut pour cela utiliser JDOM/JDOM2 XPATH ou autre.


    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Mon problème est le suivant : Je ne trouve pas le moyen de descendre en dessous du premier noeud :
    //J'utilise ceci pour aller chercher mon message (J'utilise JDOM2)
    Document jdomDocument = saxBuilder.build("outfilename.xml")
    //ceci pour définir la racine de mon arbo
    racine = jdomDocument.getRootElement();
    //Et ceci pour récupérer le BODY, mais je ne comprends pas trop ce que ma liste va contenir, donc je ne sais pas comment descendre plus bas dans l'arbo
    List<Element> BodyElement = racine.getChildren("Body");


    Pour information, j'ai besoin de récupérer toutes les lignes "Row" pour les découper et le stocker en BDD (Ne me reprochez pas le format du fichier XML, c'est celui d'un client)


    Code xml : 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
    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
    <FetchPropertyReportResponse xmlns="ChartsWeb">
    <FetchPropertyReportResult>
    <TimeStamp>2015-06-09T04:18:58.3477994-05:00</TimeStamp>
    <TimeExec>1825.2032</TimeExec>
    <Success/>
    <ReportResults>
    <ReportResult PropCode="NomProperty" ReportName="NomRapport">
    <Success/>
    <MetaTags><RepRevn="Rev 1.0"></MetaTags>
    <ColumnNames>
    ExtractionDate|Date|Property|RoomTyp|Capacity|RmNt|GuestNt|Arriv|Accomm|Occup|AvRmRate|YldIndex
    </ColumnNames>
    <ColumnDisplays>
    Extraction Date|Date|Property|Room Type|Room Capacity|Room Nights|Guest Nights|Arrivals|Accommodation|Occupancy|Average Room Rate|Yield Index
    </ColumnDisplays>
    <ColumnTypes>
    DATE|DATE|CHAR|CHAR|INT|INT|INT|INT|MON|PERC|MON|INT
    </ColumnTypes>
    <Rows>
    <Row>
    09/06/15|08/06/15|rr|DBLP|8|6|10|6|742.15|75.0|123.69|0
    </Row>
    <Row>
    09/06/15|08/06/15|rr|[HD|10|0|0|0|0.00|0.0|0.00|0
    </Row>
    <Row>
    09/06/15|08/06/15|rr|DBL|6|6|6|4|699.52|100.0|116.59|0
    </Row>
    <Row>
    09/06/15|08/06/15|rr|DBLS|27|24|29|17|2806.70|88.9|116.95|0
    </Row>
    </Rows>
    </ReportResult>
    </ReportResults>
    </FetchPropertyReportResult>
    </FetchPropertyReportResponse>
    </soap:Body>
    </soap:Envelope>

    Merci pour votre aide, je ne sais plus comment m'y prendre.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 579
    Par défaut
    Citation Envoyé par momolescro Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //Et ceci pour récupérer le BODY, mais je ne comprends pas trop ce que ma liste va contenir, donc je ne sais pas comment descendre plus bas dans l'arbo
    List<Element> BodyElement = racine.getChildren("Body");
    getChildren() c'est un pluriel. Ça veut dire que tu demandes plusieurs choses qui s'appellent "Body".
    Toi dans ton document tu as un seul <Body>... Mais ça te regarde. Tu aurais pu en avoir trente.

    getChildren() renvoie donc la liste de tous les éléments fils de la racine, qui s'appellent "Body".
    Dans ton cas, la liste contiendra donc un seul élément, le seul est unique <Body> de ton document.

    Il aurait été mieux de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Element bodyElement = racine.getChild("Body");
    ... Mais si tu essaies tu constateras que ça ne marche pas -_-°.
    Pourquoi ? Parce que <soap:Body> indique que c'est l'élément <Body> dans le namespace "http://www.w3.org/2003/05/soap-envelope". Or toi, tu demandes <Body> sans aucun namespace, et il n'y a pas ça dans ton document.

    Il faudrait donc faire quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // quelque part dans les propriétés de ta classe :
    private static final Namespace SOAP_NAMESPACE = Namespace.getNamespace("http://www.w3.org/2003/05/soap-envelope");
     
    // ailleurs :
    Element bodyElement = racine.getChild("Body", SOAP_NAMESPACE);
    ... Et ça marche.
    Mais ça reste compliqué d'aller chercher les <Row> à partir de là.


    Citation Envoyé par momolescro Voir le message
    Pour information, j'ai besoin de récupérer toutes les lignes "Row" pour les découper et le stocker en BDD (Ne me reprochez pas le format du fichier XML, c'est celui d'un client)
    Si c'est la seule chose qui t'intéresse, tu ferais mieux d'utiliser racine.getDescendants(Filters.element("Row")). Il se chargera lui-même de descendre chercher tous les éléments <Row>.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [java]Encodage fichier XML avec XMLType
    Par adrien.nicolet dans le forum Oracle
    Réponses: 1
    Dernier message: 08/03/2007, 13h09
  2. envoie fichier XML avec apartir d'une servlet
    Par s.lakhlifi dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 11/10/2006, 12h35
  3. [DTD] Valider fichier xml avec une DTD externe
    Par Tail dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 26/06/2006, 18h14
  4. Java et XML : Traitement d'un fichier XML avec JAVA
    Par nice dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 18/05/2006, 21h24
  5. [XML] Comment parser ce fichier XML avec java !
    Par jlassira dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 13/03/2006, 12h56

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