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 :

Filtre sur attribut [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é
    Profil pro
    Inscrit en
    Février 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 89
    Par défaut Filtre sur attribut
    Bonjour,

    J'uilise l'API Jdom et
    j'ai un fichier xml ce-dessous:
    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
     
    <racine>
    	<couleur nom = "violet">
    		<longeur> 1 </longeur>
    		<largeur> 1 </largeur>
    		<hauteur> 1 </hauteur>
    	</couleur>
     
    	<couleur nom = "rouge">
    		<longeur> 2 </longeur>
    		<largeur> 2 </largeur>
    		<hauteur> 3 </hauteur>
    	</couleur>
     
    	<couleur nom = "violet">
    		<longeur> 4 </longeur>
    		<largeur> 2 </largeur>
    		<hauteur> 3 </hauteur>
    	</couleur>
    </racine>
    J'aimerai savoir comment faire un filtre pour supprimer toutes la partie de la couleur "violet" par exemple

    j'ai commencer par faire
    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
     
    	      SAXBuilder sxb = new SAXBuilder();
    	      document = sxb.build(new File(fichier));
    	      racine = document.getRootElement();
     
    		 Filter filtre = new Filter()
    		   {
    		      //On défini les propriétés du filtre à l'aide
    		      //de la méthode matches
    		      public boolean matches(Object ob)
    		      {
     
    		         if(!(ob instanceof Element)){return false;}
     
    		         Element element = (Element)ob;
     
    	        	 if()  // je ne sais pas quoi mettre dans ce if et par la suite ???
    J'ai essayé element.getAttribute("couleur").getValue().equals("violet") mais ca ne fonctionne pas.

    Auriez vous une idée pour m'aider ?

    Merci.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 25
    Par défaut
    as tu vu la doc: http://cynober.developpez.com/tutoriel/java/xml/jdom/
    sur ce meme site.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 89
    Par défaut
    Oui toute à fait et c'est meme la que je me suis inspiré.

    Mais je me demande maintenant s'il est bon pour moi d'utiliser des attributs. (je n'y connais pas grand chose en XML).

    Je dois utiliser un fichier xml pour sauvegarder des données, je dois pouvoir en écrire et en lire.

    Mais données sont des couleurs :
    exemple : couleur "violet" de longeur 1 largeur 1 hauteur 1
    couleur "rouge" de longeur 2 largeur 2 hauteur 3
    ...

    Je me demande si je dois utiliser des attributs, des espaces de nom ou des sous éléments, sachant que
    je dois pouvoir supprimer-ajouter(voir modifier) une couleur (et donc ses parametres) ???

    En fait je voulais savoir comment est-il préférable que j'organise mes éléments pour une manipulation facile par rapport à mes types de données.

  4. #4
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    c'est cool t'as posté dans le forum XML...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 89
    Par défaut
    Slt,

    t'es mignon remika, mais c'est pas vraiment le meme but de post. Je me suis posé un nouveau probleme par la suite, c'est pourquoi je pose la question ici. Je prend les infos la ou elles sont. Je vois pas en quoi c'est le meme sujet.

    Et tous ca ne me donne pas plus d'idée quand a mon probleme de "filtrage".

    Merci.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 25
    Par défaut
    Au vue de ton source XML

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    element.getAttribute("couleur").getValue().equals("violet")
    ca peut pas marcher. "Couleur" n'est pas un atribut, c'est un element.
    Essaye plutot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    element.getAttribute("nom").getValue().equals("violet")
    et positionne ton element sur un element "couleur" en descendant l'arbre.

    Raphael

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 89
    Par défaut
    Oui désolé c'était une erreur de recopiage, en fait je viens de cerné mon probleme, si violet ce trouve en premiere position il n'y a pas de pbl mais si il se trouve apres un autres element avec attribut style rouge, c'est la que ca coince.

    J'ai l'impression qu'il teste uniquement mon premier element "couleur". Est ce que cela est normal:
    Voici mon code :
    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
     
    	   static void supprFiltre()
    		{
    		   Filter filtre = new Filter()
    		   {
    		      public boolean matches(Object ob)
    		      {
    		         if(!(ob instanceof Element)){return false;}
    		         Element element = (Element)ob;
     
    		         int verifNom = 0;
    		         List listpara = null;
     
    		         if(element.getAttribute("nom").getValue().equals("bleu"))
    		         {
     
    			        listpara = element.getChildren();
    		            return true;
    		         }
    		         return false;
    		      }
    		   };//Fin du filtre
     
     
    		   List resultat = racine.getContent(filtre);
    		   Iterator i = resultat.iterator();
    		   Element courant = (Element)i.next();
    		   courant.removeAttribute("nom");
    		   courant.getParentElement().removeChild("couleur");
    		}
    Cela vient-il de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     List resultat = racine.getContent(filtre);
    ?

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

Discussions similaires

  1. Requete avec filtre sur un champ
    Par podz dans le forum Langage SQL
    Réponses: 7
    Dernier message: 09/02/2005, 14h37
  2. Filtre sur un ADODataSet
    Par dleu dans le forum Bases de données
    Réponses: 6
    Dernier message: 21/12/2004, 17h58
  3. Pb Filtre sur ADOTable
    Par liazidf dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/11/2004, 11h34
  4. Filtre sur une base Paradox
    Par mika dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/03/2004, 11h51
  5. [Sybase] filtre sur caractères spéciaux
    Par montelieri dans le forum Sybase
    Réponses: 4
    Dernier message: 07/04/2003, 16h49

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