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 582
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    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