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 :

Récupérer valeur d'un XML en ISO 19139 [JDOM]


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Par défaut Récupérer valeur d'un XML en ISO 19139
    Bonjour,

    J'essaie de récupérer la valeur d'un champs se situant dans un XML en ISO 19139.
    Une partie de mon XML :
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <gmd:MD_Metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/" xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     
    <gmd:contactInfo>
    <gmd:CI_Contact>
    		<gmd:address>
    		<gmd:CI_Address>
    			<gmd:electronicMailAddress>
    				<gco:CharacterString>Toto@toto.com</gco:CharacterString>
    			</gmd:electronicMailAddress>
    			<gmd:country>
    				<gco:CharacterString>France</gco:CharacterString>
    			</gmd:country>
    			<gmd:city>
    				<gco:CharacterString>Paris</gco:CharacterString>
    			</gmd:city>
    		</gmd:CI_Address>
    		</gmd:address>
    	</gmd:CI_Contact>
    </gmd:contactInfo>
    </gmd:MD_Metadata>
    Je souhaite donc récupérer "Toto@toto.com" + "France" + "Paris".

    Mon code ressemble à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    static void afficheMail() {
     
    		List listEtudiants = racine.getChildren("contactInfo");
     
    		Iterator i = listEtudiants.iterator();
    		while (i.hasNext()) {
    			Element courant = (Element) i.next();
    			System.out.println(courant.getChild("electronicMailAddress").getText());
    		}
    	}
    Mais rien ne se passe, aucune erreur, et rien à l'écran !
    Je fais une erreur quelque part, mais où ?

  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
    #1

    - JDOM respecte les namespaces et ne donne pas le choix.
    - Une liste de zéro élément n'est pas une erreur. C'est juste qu'une boucle sur cette liste sera exécutée zéro fois.

    Du coup, racine.getChildren("contactInfo"); renvoie une liste vide, parce qu'il n'existe aucun élément dont le nom est juste <contactInfo> sans namespace.
    Il n'y a que des éléments dont le nom est <contactInfo> dans le namespace "http://www.isotc211.org/2005/gmd".

    La méthode habituelle pour pas trop se casser l'oignon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static final String GMD_URI = "http://www.isotc211.org/2005/gmd";
    public static final Namespace GMD_NS = Namespace.getNamespace("gmd", GMD_URI);
     
    static void afficheMail() {
     
      List<Element> listEtudiants = racine.getChildren("contactInfo", GMD_NS);
      // la suite
    }
    #2

    Par ailleurs, la méthode getText() ne peut pas aller chercher ce qui est contenu dans les balises descendantes comme <gco:CharacterString>.
    Si tu veux extraire le texte d'un élément en ignorant ses balises, il faut utiliser getValue(). (Personnellement, je trouve ça un peu stupide.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Par défaut
    Ok, merci de l'infos !

    Mais j'ai d'autres questions, sinon ce n'est pas drôle !

    Ma méthode est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	static void afficheInfo() {
     
    		List<Element> listEtudiants = racine.getChildren("contact", GMD_NS);
     
    		Iterator i = listEtudiants.iterator();
    		while (i.hasNext()) {
    			Element courant = (Element) i.next();
    			System.out.println(courant.getValue());
    		}
    	}
    Sauf que ça retourne tous les champs "CharacterString". Je voudrai pouvoir avoir un seul champs, par exemple juste l'adresse mail. Est-ce que c'est possible ?
    Et par la suite, je voudrai pouvoir modifier ce champs, c'est aussi possible ?

  4. #4
    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
    Ben, toute la chaîne de getChild().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getChild("CI_Contact")....getChild("electronicMailAddress");
    Sans oublier le namespace à chaque fois.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Par défaut
    Yop, parfait ! Merci pour le coup de pouce !

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Par défaut
    Quoique pas tout à faire résolu !
    Il me manque une info ; Quelle méthode utilisé pour modifier l'adresse mail ?

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

Discussions similaires

  1. Récupérer valeur d'un fichier XML
    Par asnaeb dans le forum C#
    Réponses: 10
    Dernier message: 19/04/2011, 09h45
  2. Récupérer valeur dans XML
    Par toss.net dans le forum C#
    Réponses: 2
    Dernier message: 02/08/2009, 17h05
  3. [AJAX] Récupérer les valeurs d'un XML
    Par cloud76 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/01/2009, 07h20
  4. [AJAX] [Cluetip] récupérer valeur xml
    Par Benat64 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 20/11/2008, 16h29
  5. [linq] récupérer une valeur dans un xml
    Par maa dans le forum Linq
    Réponses: 8
    Dernier message: 02/02/2007, 02h42

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