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 :

Aide dans la navigation XML


Sujet :

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

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut Aide dans la navigation XML
    Bonjour,

    je m'initie à la navigation et au parsage de fichier XML avec la librairie JDOM, seulement je bloque sur une méthode récursive que j'ai nommé getElementsByTagName.

    Voici le code que j'ai :

    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
     
    public static String getNodeValueByTagName(String tag, URL url){
    	SAXBuilder parser = new SAXBuidler();
    	Document doc = parser.build(url);
    	Element root = doc.getRootElement();
    	Element result = getElementsByTagName(tag, root);
    	return result.getValue();
    }
     
    public static getElementsByTagName(String tag, Element elt){
    	List allChildren = elt.getChildren();
    	Iterator itr = allChildren.iterator();
    	while (itr.hasNext()) {
    		Element child = (Element) itr.next();
    		if(child.getName.equals(tag)){
    			return child;
    		}else{
    			getElementsByTagName(tag, child);
    			return null;
    		}
    	}
    }
    Donc en gros j’appelle la fonction getNodeValueByTagName() en lui passant l'url d'un fichier XML, ainsi que le nom d'un de ses élément, et le but est qu'il doit me renvoyer le valeur de cet élément.

    Donc je bloque à la deuxième fonction qui est récursive et doit parcourir l'arborescence du XML en cherchant le bon élément qui porte le bon nom.
    Sauf qu'il ne me renvoie pas du tout ce que je veux.

    Vous auriez une petite idée, je suis sur que c'est tout con, mais j'ai essayé trop de trucs pour y voir encore clair

  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
    Note que le plus simple pour faire ça, c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Iterator elementsItr = doc.getDescendants(new ElementFilter(tag));
    Puis prendre juste le premier.

    Citation Envoyé par ar0w4n4
    Donc je bloque à la deuxième fonction qui est récursive et doit parcourir l'arborescence du XML en cherchant le bon élément qui porte le bon nom.
    Sauf qu'il ne me renvoie pas du tout ce que je veux.
    En même temps, ton appel récursif, tu regardes même pas son résultat et tu renvoies null quoi qu'il arrive. Ça risque pas de faire quelque chose d'utile.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut
    Effectivement, avec la méthode getDescendants ça fonctionne, mais je ne savais pas qu'il parcourait tous les sous-niveaux aussi, je pensai qu'il s'arretait juste au n-1.

    En tout cas, je n'ai plus q'une méthode maintenant,et plus facile en plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public static String getNodeValueByTagName(String tag, URL url){
    	SAXBuilder parser = new SAXBuidler();
    	Document doc = parser.build(url);
    	Element root = doc.getRootElement();
    	Iterator itr = doc.getDescendants(new ElementFilter(tag));
            Element child = (Element) itr.next();
    	return child.getValue();
    }

Discussions similaires

  1. [Débutant] XmlWriter et navigation dans un document XML
    Par Nanais19 dans le forum Windows Phone
    Réponses: 2
    Dernier message: 29/05/2012, 09h28
  2. Besoin d'aide pour mise en page avec 2 images, dans un fichier xml
    Par guillaume7684 dans le forum XML/XSL et SOAP
    Réponses: 0
    Dernier message: 30/03/2011, 18h25
  3. [Besoin d'aide] Récupéré des données xml dans un champs dynamisque
    Par Endeo dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 27/08/2008, 16h22

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