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

XSL/XSLT/XPATH XML Discussion :

[XPath][Java] Récupérer la liste de toutes les valeurs d'un attribut.


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2007
    Messages : 44
    Points : 30
    Points
    30
    Par défaut [Résolu][XPath][Java] Récupérer la liste de toutes les valeurs d'un attribut.
    Bonjour,

    Je souhaiterais récupérer la liste de toutes les valeurs que prends un attribut dans une liste d'éléments considérés. Je n'y arrive pas... à part en comparant (pour chaque élément) la valeur de l'attribut avec le contenu complet d'une liste d'attribut. Si elle est pas encore dans la liste je la rajoute.
    Cependant, ma liste peut atteindre près de 10000 valeurs différentes, et je pense que ma méthode (bourrine) est très lentes :'(

    Merci d'avance et n'hésitez pas si vous voulez plus de précisions

    Edit :
    Voilà le XML que j'ai en entrée :

    Et en sortie je souhaiterais avoir une liste contenant les valeurs :
    rondelle_ft.prt
    sw3dps-md52c150dn100-1278741887.prt
    sw3dps-md52c150dn100-1_dn80_100.prt
    sw3dps-md52c150dn100-1_dn100_se.prt
    sw3dps-md52c150dn100-1_md52c150.prt
    sw3dps-md52c150dn100-1_md52dn80.prt
    etc.

    En fait je veux récupérer le nom de mes pièces en doublon.

    Pour le moment, je fait ça :
    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
    public void testDoubloons() throws JDOMException{
    		XMLDocument xmlDoc = new XMLDocument(mainFrame.conf.listXMLFilePath);
     
    		XMLDocument output = new XMLDocument(XMLAttributes.DOUBLOONS,true);
    		output.SaveXML(mainFrame.conf.tempDoubleXmlPath);
     
    		String xPath = "descendant::"+ XMLAttributes.FILE_ELEMENT;
    		General.printMsg(xPath, General.DEBUG_MESSAGE);
    		XPath test = XPath.newInstance(xPath.toString());
    		List <?> liste = test.selectNodes(xmlDoc.getRacine());
    		for (int j=0;j<liste.size();j++){
    			Element el = (Element) liste.get(j);
    			String nameToTest = el.getAttributeValue(XMLAttributes.NAME);
    			String tempXPath = "descendant::"+ XMLAttributes.FILE_ELEMENT +"[attribute::"+XMLAttributes.NAME+"=\""+ nameToTest +"\"]";
    			XPath testLocal = XPath.newInstance(tempXPath.toString());
    			List <?> resultat = testLocal.selectNodes(xmlDoc.getRacine());
    			if(resultat.size()>1){
    				for(int i=0;i<resultat.size();i++){
    					Element el1 = (Element) resultat.get(i);
    					el1.detach();
    					output.getRacine().addContent(el1);
    				}
    			}
    			output.SaveXML(mainFrame.conf.tempDoubleXmlPath);
    		}
    		XMLDocument.exportDoubloonsXmlToXsl(output,mainFrame.conf.doubloonsFilePath);
    	}
    Mais ça ne marche pas :/ et c'est trop lent si j'ai beaucoup d'entrées :'(

    edit : code modifié et fonctionnel, mais les temps de traitement sont trop longs (de l'ordre de la demi journée pour ma base de test "minimaliste" de 60000 fichiers).

  2. #2
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    tu peux mettre le code entree , de traitement et de sortie .... ca permettra d y voir plus clair
    ... un flash ... et ça repart

    700R ... catch me if u can

    Best regards,
    .

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2007
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Petit up, c'est vraiment urgent.
    Mon code a été édité, et fonctionne. Cependant, les temps de traitement sont bien trop élevés !
    Je désespère un peu :/

  4. #4
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    tu peux utiliser ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //File[not(@name = preceding-sibling::File/@name)]/@name
    Ce n'est pas très performant, mais ça ne devrait pas prendre une demi-journée pour 60000 éléments... Le plus performant serait, je pense, de parcourir séquentiellement tous tes éléments et de stocker les noms dans une table de hashage au fur et à mesure.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2007
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Je vais essayer avec ça.
    Le @ a une signification derrière l'attribut ?
    Merci beaucoup pour ta réponse !!

  6. #6
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    @ est la forme abrégée de attribute::
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2007
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Merci, ça a l'air de marcher

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

Discussions similaires

  1. [PHP 5.2] [POO] Afficher toutes les valeurs de mes attributs
    Par pierrot10 dans le forum Langage
    Réponses: 2
    Dernier message: 15/02/2010, 23h04
  2. Récupérer toutes les valeurs d'une liste déroulante
    Par christgh dans le forum Langage
    Réponses: 4
    Dernier message: 10/12/2008, 21h17
  3. Liste de toutes les classes de l'API Java
    Par Albataur dans le forum Général Java
    Réponses: 6
    Dernier message: 12/02/2008, 17h02
  4. Réponses: 4
    Dernier message: 18/09/2007, 00h32
  5. Réponses: 4
    Dernier message: 03/05/2006, 14h30

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