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 :

Parsing et validation de (très) gros fichiers de façon confortable.


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut Parsing et validation de (très) gros fichiers de façon confortable.
    Bonjour,

    Voilà, je dois parser des fichiers XML fournis par une source extérieur contenant la définition de plusieurs dizaines de milliers de produits. Pour cela j'ai besoin de deux choses.

    1) la validation au fur et à mesure par rapport à un schéma XSD.
    2) récupérer les produits l'un après l'autre de la façon la plus confortable possible.

    J'ai pensé utiliser Xerces pour cela, (je sais pas si vous en connaissez des plus pratiques?).

    J'ai aussi par le passé utilisé XmlBeans dont j'ai beaucoup apprécié le coté accesseurs fortement typés etc.... Bien que xmlbeans ne soit pas jouable pour des fichiers de plusieurs centaines de mégas, je me demande si je ne pourrai pas combiner les deux approches :

    a) Parcourir le fichier xml produit par produit avec un parser SAX.
    b) Mapper chaque produit à l'aide de XmlBeans. Pour récupérer les attributs et sous-éléments de façon typée.

    Possible? Ou alors connaissez-vous des générateurs de code qui pourraient me simplifier le boulot avec Sax?

    Tout conseil est le bienvenu, merci d'avance.

  2. #2
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Re,

    Pour ceux que ça intéresse, je m'en suis sorti avec JaxB et une approche StAX avec listener comparable à celle décrite dans l'exemple "streaming-unmarshalling".

    Je suis arrivé à gérer mes gros fichiers de 200mo avec simplement une interface composée de 2 méthodes callback:

    -l'une qui me signale qu'un Item vient d'être traité et qui me passe ce dernier en paramètre.
    -l'autre pour signaler qu'une portion du fichier ne respecte pas le schéma, qui passe en paramètres les détails de l'erreur (no de ligne etc...).

    Comme ça c'est efficace, ça consomme pas tant de mémoire, et surtout ça m'évite de taper 500 lignes de plomberie pour convertir des strings en int/double et ce genre de chose.

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 03/05/2012, 14h22
  2. [CSV] Traitement d'un très gros fichier XML ou CSV
    Par Paulux1 dans le forum Langage
    Réponses: 3
    Dernier message: 25/03/2008, 16h05
  3. [SimpleXML] Analyser un très gros fichier XML
    Par Paulux1 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 20/02/2008, 02h53
  4. Ouvrir un très gros fichier XML
    Par strat0 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 02/11/2007, 13h29
  5. Transformer un très gros fichier XML avec XSL
    Par wozzz dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 30/05/2006, 10h57

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