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 :

[XML/java]QUEL API? quel methode


Sujet :

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

  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut [XML/java]QUEL API? quel methode
    voila,

    je cherche la meilleure façon (gain de temps surout) de réaliser le travail suivant :

    - je dispose d'un repertoire avec une centaine de fichiers XML (à plat).
    - le but est de detecter certains elements spécifiques (tag) en doubles
    - ces elements peuvent se trouver soit dans le même fichier ou dans n'importe quel autre fichier xml du repertoire.

    ma question est comment proceder? DOM? SAX?,XSL?.

    merci de votre aide.
    Ce n’est pas en cassant le thermomètre que vous ferez baisser la température

  2. #2
    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
    Salut,

    personnellement, je procèderais de la manière suivante, en tout Java :

    - Parcours récursif des repértoires et ouverture de chaque fichier XML
    - parsing SAX du fichier, et recherche dans une table de hachage d'un tag déja présent, sinon stockage dans la table de hachage
    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

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    merci GrandFather,

    - ok pour parcours de tt les fichiers.

    - tu peux m'en dire plus sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    et recherche dans une table de hachage
    en particulier sa construction. sachant que des que je trouve un tag qui m'interesse dans un fichier A. il faut que je cherche le même tag à la fois dans A et aussi dans tous les autres fichierautre que A du repertoire.
    Ce n’est pas en cassant le thermomètre que vous ferez baisser la température

  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
    Tu connais à l'avance le nom des éléments dont tu dois trouver les doublons, ou sont-ils désignés selon un critère qui n'est évalué que durant l'exécution ?
    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
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    le nom des éléments dont tu dois trouver les doublons
    oui, j'ai une liste mais il ya un critere sur leur attribut (pas sur la valeur de lattribut mais seulement si l'attribut existe ou non).
    Ce n’est pas en cassant le thermomètre que vous ferez baisser la température

  6. #6
    Membre habitué Avatar de Xavinou
    Inscrit en
    Mai 2005
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 135
    Points : 156
    Points
    156
    Par défaut
    Gain de temps d'execution ou de développement ?

    Dans le 1er cas SAX semble effectivement la meilleure solution, sinon construire des DOM et lancer des requêtes XPath est sans doute plus rapide...

  7. #7
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Gain de temps d'execution ou de développement
    plutot execution car ce bout de code va s'imbriquer dans un gros projet et j'ai pas envie de plomber ses perfs

    j'ai déja commencé avec SAX ça avance bien. pour l'instant je detete ls elements qui m'interesse. donc vous confirmez bien que SAX est plus rapide (execution)?
    Ce n’est pas en cassant le thermomètre que vous ferez baisser la température

  8. #8
    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
    Citation Envoyé par valal
    j'ai déja commencé avec SAX ça avance bien. pour l'instant je detete ls elements qui m'interesse. donc vous confirmez bien que SAX est plus rapide (execution)?
    Ca dépend plus rapide que quoi.
    Question rapidité, la comparaison SAX/DOM n'est pas très pertinente dans le sens où dans la plupart des parseurs qui implémentent SAX et DOM, l'arbre DOM est construit à partir d'événements SAX... En te passant de DOM, le gain se limitera à l'économie du temps que représente l'instanciation des objets Node.
    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

  9. #9
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     gain se limitera à l'économie du temps que représente l'instanciation des objets Node.
    ok.

    mon pb actuel est le choix de la structure de données ds laquelles je vais stocké les info pour une recherche de doublons à la fin du traitement. pour la hashTable le pb c'est qu'elle n'accepte pas les clef en double!!! alors que moi je dois stocker à chaque fois un couple (clé,valeur).

    merci.
    Ce n’est pas en cassant le thermomètre que vous ferez baisser la température

  10. #10
    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
    Tu ne peux pas stocker directement les objets Node dans ta table... Utilise plutôt un ArrayList qui contiendra tous les objets Node associés à une clé particulière (nom de l'élément). La première tentative d'insérer un couple (clé,Node) dans la table créera une instance de ArrayList avec le Node comme seul élément, puis insérera e la paire (clé,ArrayList) dans la table ; les insertions suivantes ne feront qu'ajouter un Node supplémentaire au ArrayList associé à la clé de recherche.
    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

  11. #11
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    dsl j'ai eu une autre urgence....merci pour les explications mais à vrai dire je n'ai pas trés bien capté la dernière "GrandFather".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Utilise plutôt un ArrayList qui contiendra tous les objets Node associés à une clé particulière (nom de l'élément)
    tu veux dire stocker tt les noeuds qui m'interesse ds un arrayList sous forme de Node?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    La première tentative d'insérer un couple (clé,Node) dans la table créera une instance de ArrayList avec le Node comme seul élément
    pas compris

    - pour eclaircir les choses :

    - je cherche tt les tag qui ont un certain attribut AT pour lequelles il ya au moins le même tag (avec le même attribut AT) réutilisé ds un même fichier ou dans deux fichier différents et ceci dans un lot de document XML.


    j'ai donc besoin de stocker les infos suivantes :

    - tag
    - valeur de AT
    - et le fichier oû se trouve se tag

    le premier pb c'est que je peux trouver le tag ds le même fichier et là c'est deux fois les mêmes données.
    le deuxiéme c'est que choisir comme clé? (le tag?, lavaleur de AT?, le nom du fichier?....)

    merci pour votre aide.
    Ce n’est pas en cassant le thermomètre que vous ferez baisser la température

Discussions similaires

  1. quel api utiliser pour lire un fichier xml?
    Par sth56 dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 28/07/2009, 08h22
  2. Quel API conseillez-vous pour lire et modifier un fichier XML ?
    Par sbelli dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 20/10/2008, 17h25
  3. Affichage de statistiques quel API ?
    Par jbwan dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 10/05/2006, 08h27
  4. Réponses: 2
    Dernier message: 09/05/2006, 18h41
  5. [Sondage][XML-JAVA]Qu'elle API choisir?
    Par Janitrix dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 18/04/2006, 13h59

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