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 :

recherche dans un fichier xml (castor)


Sujet :

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

  1. #1
    Membre �clair� Avatar de pingoui
    Homme Profil pro
    Activit� professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : Activit� professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par d�faut recherche dans un fichier xml (castor)
    Bonjour,
    Apr�s avoir chang� mon fusils d'�paule et travaill� sur un code plus simple, j'aimerai cr�er une fonction recherche pour mon programme.

    Pour le moment, j'arrive sans aucun souci � faire une recherche mais celle-ci s'arr�te lorsque le prog trouve un r�sultat. J'aimerai que celle--ci continu � rechercher dans le fichier xml pour trouver d'autre r�sultats.

    En gros, j'ai un un fichier.xml qui contient des canaris. Chaque canari � un nom. J'aimerai trouv� tous les canaris qui on le nom "titi" par exemple !
    Je sais que �a semble idiot d'avoir des canaris de m�me nom mais je compte utilis� cette fonction pour rechercher tous les canaris de m^me sexe par exemple.

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    public class Annee { 
    	  private List listeCanaris = new ArrayList();  
    	  private String file;
    	  private String canariMale;
     
     
    	   public Annee() { 
    	      super(); 
    	   } 
     
    	   public Annee(String file) { 
    	      this(); 
    	      this.file=file;
    	   } 
     
    	   public Canari getCanari(String nomCanari) { 
               for(Iterator ite = listeCanaris.iterator();ite.hasNext();){ 
                   Canari unCanari = (Canari) ite.next(); 
                   if(nomCanari.equals(unCanari.getNom())){ 
                   return unCanari; // canari trouvé on le renvoie 
               } 
            } 
            // si on trouve pas ??? 
            System.out.println("Pas de canari du nom de "+nomCanari+" trouvé dans le fichier "+file+ "!!!"); 
            return null; 
           } 
     
     
    	   public void removeCanari(String nomCanari){ 
    	      Canari canariASupprimer = getCanari(nomCanari); 
    	      if(canariASupprimer!=null) listeCanaris.remove(canariASupprimer); 
    	   }  
     
           public void setCanari(String nomCanari, String nouveauNom){
           	  Canari canariAModifier = getCanari(nomCanari);
           	  if(canariAModifier!=null) canariAModifier.setNom(nouveauNom);
           }
     
    	   public void addCanari(Canari unCanari) { 
    	   	listeCanaris.add(unCanari);  
    	   } 
     
    	   public List getAnnee() { 
    	      return listeCanaris; 
    	   }  
     
    	   public void setAnnee(List listeCanaris) { 
    	      this.listeCanaris = listeCanaris; 
    	   } 
     
    	   public String getNomCanariMale(){ 
    	    return canariMale; // ce qui est dans le flux 
    	   } 
     
    	 public Canari getNomCanariMale(String file){ 
    	    //fait le lien entre le nom et les infos du canari 
    	    return Annee.lire(file).getCanari(getNomCanariMale()); 
    	   }
    Pour le moment, j'arrive � retrouv� un canari en faisant:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    Annee lecture = Annee.lire(nomDuFichier);
    Canari unCanari = lecture.getCanari(nomDuCanari);
    D�s que le porgramme trouve un canari, il arr�te les recherches!


    Je pense donc mettre les canaris dans une arrayList pour stocker tous le canari qui ont le nom "titi" par exemple.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public ArrayList getPlusieursCanari(String nomCanari) { 
    	       ArrayList array = new ArrayList(); 
    	            for(Iterator ite = listeCanaris.iterator();ite.hasNext();){ 
    	                Canari unCanari = (Canari) ite.next(); 
    	                if(nomCanari.equals(unCanari.getNom())){ 
    	      array.add(unCanari); 
    	            } 
    	      return array; 
    	         } 
    	 }
    Avec cette fonction, je pense arriver � mes fins.... Mais j'ai cette erreur :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    This method must return a result of type ArrayList
    Help please

  2. #2
    Expert �minent
    Avatar de adiGuba
    Homme Profil pro
    D�veloppeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par d�faut
    Salut,

    Ton code est mal indent�, return est � l'int�rieur du for...

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public ArrayList getPlusieursCanari(String nomCanari) {
    	ArrayList array = new ArrayList();
    	for(Iterator ite = listeCanaris.iterator();ite.hasNext();) {
    		Canari unCanari = (Canari) ite.next();
    		if(nomCanari.equals(unCanari.getNom())) {
    			array.add(unCanari);
    		}
    		return array;
    	}
    	/* le return devrait être ICI */
    }
    L'erreur vient du fait que dans certains cas (si lIterator est vide) tu ne rentre pas dans le for et du coups tu arrive � la fin de la m�thode sans avoir fait de return ce qui provoque l'erreur � la compilation...

    Un conseil : indente bien ton code...
    En plus la plupart des editeurs Java propose une indentation automatique...

    a++

  3. #3
    Membre �clair� Avatar de pingoui
    Homme Profil pro
    Activit� professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : Activit� professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par d�faut
    Super... merci beaucoup pour tes explications

    Comment r�cup�rer et afficher le r�sultat, maintenant?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    Annee lecture = Annee.lire(nomDuFichier);
    listeDeCanaris desCanari = lecture.getPlusieursCanari("titi");
    System.out.println("Canaris trouvé:"+listeDeCanaris);
    pour le moment, j'ai cette erreur :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    listeDeCanaris cannot be resolved or is not a type

  4. #4
    Expert �minent
    Avatar de adiGuba
    Homme Profil pro
    D�veloppeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par d�faut
    Ta m�thode renvoit une ArrayList et non pas une listeDeCanaris !!!
    D'ailleurs listeDeCanaris n'est pas un type mais le nom de ton attribut...

    Essayce comme cela :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    Annee lecture = Annee.lire(nomDuFichier);
    List desCanari = lecture.getPlusieursCanari("titi");
    System.out.println("Canaris trouvé:"+listeDeCanaris);
    D'ailleurs il serait plus propre de retourner une List au lieu d'une ArrayList dans ta m�thode getPlusieursCanari().
    Ca te permet d'utiliser �ventuellement un autre type de liste sans avoir � modifier autre chose que ta m�thode getPlusieursCanari()

    Plus d'explications dans les les cours et tutoriels pour apprendre Java : http://java.developpez.com/cours/

    a++

  5. #5
    Membre �clair� Avatar de pingoui
    Homme Profil pro
    Activit� professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : Activit� professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par d�faut
    merci beaucoup

    juste un petit truc....

    j'ai ce r�sultat dans la console:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Canaris trouvé:[Canari@9f0d]
    avec
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    System.out.println("Canaris trouvé:"+desCanari);

  6. #6
    Expert �minent
    Avatar de adiGuba
    Homme Profil pro
    D�veloppeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par d�faut
    Normal tu stockes des objet Canari dans ta List.

    Lorsque tu affiches une liste les �l�ments de la liste sont affich� de la mani�re suivante :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    [element1, element2, element3, ...]
    Dans ton cas il n'y a qu'un element...
    Il t'affiche donc ton objet Canari.
    Si tu veux un affichage + clair il faut surcharger toString()

    a++

  7. #7
    Membre �clair� Avatar de pingoui
    Homme Profil pro
    Activit� professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : Activit� professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par d�faut
    ok.... je suis d�sol� mais je vais,encore , te poser une question c**

    Si je fais :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    System.out.println("Canaris trouvés:"+desCanari.toString());
    je n'obtiens rien.... je pense que c'est normale...car il faut afficher la bonne structure

    Un canari =
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Canari(String nom,String sexe,int stam,int bague, int year)
    Dans la class, j'ai des m�thodes "setBidule et "getBidule"

    comment lui indiquer la bonne structure poyur l'affichage?
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    System.out.println("Canaris trouvés:"+desCanari.getNom().toString() ,desCanari.getSexe().toString(), desCanari.getStam().toString(),desCanari.getBague().toString(),desCanari.getYear().toString()    );

  8. #8
    Expert �minent
    Avatar de adiGuba
    Homme Profil pro
    D�veloppeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par d�faut
    Tu retournes un objet List et pas un objet Canari !

    Tu dois donc parcourir ta liste :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    Iterator iterator = desCanari.iterator();
     
    while ( iterator.hasNext() ) {
    	Canari unCanari = (Canari) iterator.next ();
    	System.out.println ( unCanari.getNom() );
    }

  9. #9
    Membre �clair� Avatar de pingoui
    Homme Profil pro
    Activit� professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : Activit� professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par d�faut
    Merci beaucoup adiGuba !

    Ca marche !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [DOM] Recherche dans un fichier XML via XPath
    Par Sayrus dans le forum Biblioth�ques et frameworks
    R�ponses: 6
    Dernier message: 18/06/2007, 16h43
  2. Javascript et Recherche dans un fichier XML
    Par Invit� dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 05/02/2007, 08h27
  3. [XSLT] Comment rechercher dans un fichier xml
    Par abdoulax dans le forum XSL/XSLT/XPATH
    R�ponses: 1
    Dernier message: 22/10/2006, 19h28
  4. Probleme dans mon code recherche dans un fichier Xml
    Par dederfred dans le forum Delphi
    R�ponses: 11
    Dernier message: 21/10/2006, 16h51
  5. Faire une recherche dans un fichier XML
    Par Devilish_Seraph dans le forum XML/XSL et SOAP
    R�ponses: 7
    Dernier message: 21/01/2006, 13h41

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