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 :

[JAVA & XML] Fichiers + Traitements lourds, des conseils pour l'API ?


Sujet :

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

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 90
    Par défaut [JAVA & XML] Fichiers + Traitements lourds, des conseils pour l'API ?
    Bonjour
    je vais essayer d'expliquer simplement mon probleme

    actuellement un programme a été fait avec JDOM. Il parse un fichier XML, modifie l'arborescence et enregistre le tout dans un autre fichier. Le problème est que la mémoire ne suit pas, meme en augmentation celle allouée à la JVM.

    Concernant le fichier XML, on a un ensemble d'entités spatiales (absolues ou relatives) de ce genre la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <es  id='' type=''>
      <esa type='' nom=''>
        <text></text>
      </esa>
    </es>
    <es>
      <esr text=''>
        <relation></relation>
        <esa></esa>
      </esr>
    </es>
    Pour chaque ES, on va faire des requetes dans une base de données Postgresql de facon à trouver des coordonnées, et on va ainsi rajouter plusieurs représentations possibles

    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
     
    <es  id='' type=''>
      <esa type='' nom=''>
        <text></text>
        <representation>
          <type table='' query='' />
          <point><coordonnees></coordonnees></point>
        </representation>
        <representation>
          <type table='' query='' />
          <point><coordonnees></coordonnees></point>
        </representation>
      </esa>
    </es>
    <es>
      <esr text=''>
        <relation></relation>
        <esa>
          <representation>
          <type table='' query='' />
          <point><coordonnees></coordonnees></point>
        </representation>
        </esa>
      </esr>
    </es>
    sachant que la représentation peut etre un point :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <coordonnees>441500,1762200</coordonnees>
    ou un polygone plus ou moins conséquent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <frontieres>867825.944472697,2160996.99484836 868372.431235036,2162090.65577777 869084.124268086,2163639.49320755 869209.461064312,2163626.43251763 869284.2736127,2163756.8102819 869856.079782686,2163865.64936454 870012.235224419,2163855.10915864 870114.20025974,2163853.50521427 870200.011283848,2163621.16241468 870253.857987894,2163398.09957899 870290.290438716,2163039.15974116 870297.164486041,2163019.7978412 870472.108990463,2162524.52273143 870538.558114605,2162307.87567324 870608.100560043,2162100.62314639 870600.882810352,2161674.7759146 870608.215127499,2161592.97475144 870641.554257025,2161476.68878419 870668.019339226,2161404.51128727 870646.824359974,2161254.77162304 870630.097511483,2161135.96517178 870612.568690804,2161012.8051572 870569.491327568,2160855.50404092 870494.44964427,2160715.73174531 870492.043727706,2160646.18929987 870528.476178528,2160510.54143266 870522.976940668,2160418.77290087 870517.363135353,2160409.9512068 870460.308542555,2160320.24488921 870360.062019065,2160164.43314984 870293.612894924,2160116.31481857 870157.048488066,2160077.13274881 870064.707119,2160069.91499912 869909.239081999,2160020.99469566 869807.388614134,2160010.56905722 869779.434155012,2160012.86040632 869670.365937455,2160021.9112353 869361.721212562,2159996.82096257 869280.722021582,2160141.51965876 869095.008176351,2160231.3405438 869034.28742498,2160256.08711417 868951.340587258,2160274.30333959 868865.30042824,2160279.80257745 868459.273366242,2160421.29338489 868392.595107189,2160411.21144881 868262.102775469,2160394.14089795 868224.524650092,2160339.95049154 868116.258404723,2160338.91938444 868039.84191196,2160338.0028448 867825.944472697,2160996.99484836</frontieres>
    (y en a des bien plus gros)


    sachant qu'il peut y avoir de tres multiples réponses (genre pas loin d'une 20aine pour une seule entité spatiale, parfois 0 pour une autre), on peut comprendre que la taille augmente de facon conséquente
    un fichier de 76Ko devenant un fichier de 2,2Mo (en environ 7min)


    Maintenant que je vous ai mis dans le contexte, meme s'il est dit dans la FAQ sur votre site, que JDOM est une API légère et rapide, j'ai l'impression que dans notre cas c'est trop lourd

    Donc je cherche à déterminer quelle est la meilleure facon de remplacer cela.

    Il y a évidemment SAX, qui est connu pour sa légèreté, mais pour pouvoir faire le requetage et la réalisation du fichier de sortie, je dois créer des objets ES - ESA - ESR. Donc je me demande si de cette facon c'est jouable (l'arborescence en JDOM doit prendre pas mal).

    mais j'ai découvert qu'il existait d'autres API qui permettent de simplifier certains traitement tels que StAX
    ou qui permettent de sérialiser/désérialiser des objets en XML (tel que XStream)
    cela peut etre intéressant et pas trop lourd d'utiliser de telles API ?


    Je cherche des conseils éclairés de personnes qui connaissent bien tout ca, de facon à essayer d'envisager les meilleurs choix possibles, histoire qu'on ne doivent pas encore rechanger par la suite, et avoir une bonne pérénité
    sachant que le facteur temps est loin d'etre le plus important, car il s'agit d'une indexation et que forcément c'est censé etre fait rarement et qu'à certains moments, par contre le facteur consommation est forcément important car les documents peuvent etre relativement gros, et il est question de réaliser des webs services par la suite

    je vous remerci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Architecte
    Inscrit en
    Mai 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2004
    Messages : 57
    Par défaut
    Bonjour,

    J'en suis au même point que toi.
    Moi je cherche une API pour implémenter des classes à partir d'un fichier XML (je crois qu'on dit : data binding).
    J'ai trouvé plein d'API :
    - JAXB
    - Castor
    - Commons-diggester (struts)

    Par contre je n'ai pas trouvé de doc complète que des petits exemples.
    Quel est la meilleur API ? ou la façon la plus simple de faire ?

Discussions similaires

  1. Réponses: 22
    Dernier message: 31/05/2010, 13h08
  2. [Écran] Des conseils pour l'achat d'un moniteur minimum 24" ?
    Par elitost dans le forum Périphériques
    Réponses: 2
    Dernier message: 02/02/2009, 00h39
  3. Besoin des conseils pour choix de CMS
    Par kira'an dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 18/09/2008, 15h10
  4. Des conseils pour la performance d'un serveur firebird?
    Par _skip dans le forum Installation
    Réponses: 2
    Dernier message: 19/12/2007, 22h05
  5. Réponses: 5
    Dernier message: 05/02/2007, 21h51

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