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 :

Transformation XSL Probleme mémoire


Sujet :

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

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Points : 12
    Points
    12
    Par défaut Transformation XSL Probleme mémoire
    Bonjour à tous,

    Mon problème est le suivant : je cherche par le biais d'un fichier XSL à transformer un fichier xml de 27 Mo en un fichier "plat".

    Seulement voilà, le traitement échoue sur un OutOfMemory, et le but est d'éviter d'utiliser plus de mémoire.

    Auriez vous une solution ?

    Voici le code incriminé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    TransformerFactory tf = TransformerFactory.newInstance();
     
     
    StreamResult sr = new StreamResult(new BufferedWriter(new File(monFichier)));
    Transformer headerTransformer = tf.newTransformer(new StreamSource(new FileInputStream(nomFichierXSL)));
     
    InputSource lInput = new InputSource(new BufferedReader(new FileReader(new File(anXMLFileName))));
     
    SAXSource lSource =  new SAXSource(lInput);
     
    headerTransformer.transform(lSource, sr);

  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
    Bonjour,

    ce code ne va rien nous dire, c'est à mon avis plutôt du côté du code XSLT qu'il faut regarder... Dans ce cas, ça se passe sur le forum XML/XSL.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Transformation XSL Probleme mémoire
    Salut,

    Les problèmes mémoire en JAVA peuvent être résolus en modifiant la ligne de commande exécutant ton programme (soit à partir de Tomcat, JBoss, application, etc.)

    Par défaut Java utilise une certaines quantité de mémoire et tu peux l'augmenter en rajouter à la commande Java le paramètre -Xmx

    > java -Xmx256M

    En fonction du programme utilisé, il faut que tu repères un script de démarrage (startup.sh, jboss.sh) pour y modifier la ligne de commande

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Effectivement, il me suffirait d'augmenter la taille mémoire de la VM pour que cela fonctionne.
    Mais ce que je souhaiterais, c'est que la transformation de mon fichier XML se fasse sans que le fichier soit chargé en entier.

    Alors effectivement, il est possible que mon problème ne soit pas posté au bon endroit .

    Est-ce que la façon dont est construit un fichier XSL influe sur l'utilisation mémoire de la transformation ?

  5. #5
    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 Krishtov
    Effectivement, il me suffirait d'augmenter la taille mémoire de la VM pour que cela fonctionne.
    Mais ce que je souhaiterais, c'est que la transformation de mon fichier XML se fasse sans que le fichier soit chargé en entier.
    Ca, ça va être difficile... Du fait qu'à partir d'un template XSLT quelconque tu puisses, par une expression XPath, accéder à n'importe quel noeud de la source XML nécessite que la source XML soit chargée intégralement en mémoire. Si ce n'était pas le cas, ça poserait soit un gros problème de performances dû à des E/S incessantes, soit ça ne fonctionnerait même pas du tout en présence d'un flux XML à sens unique.

    Maintenant, tu peux jouer sur les différents processeurs XSLT et choisir celui qui a la moindre empreinte mémoire.

    Citation Envoyé par Krishtov
    Est-ce que la façon dont est construit un fichier XSL influe sur l'utilisation mémoire de la transformation ?
    Oui, souvent à cause d'un mauvais usage de la récursivité, mais le gros de l'utilisation mémoire provient de la source XML à transformer et du flux XML de sortie.

Discussions similaires

  1. Probleme transformation XSL
    Par toukii dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 29/03/2009, 23h12
  2. Utilisation de MSXML pour la transformation XSL
    Par Supergizmo dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 25/07/2005, 14h02
  3. [xml-xsl] Probleme avec position()
    Par seb30 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 21/04/2005, 11h10
  4. [PLUGIN] Plugin de transformation XSL ?
    Par elitost dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 20/10/2004, 09h39
  5. Transformation XSL et caractères spéciaux
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 4
    Dernier message: 28/04/2003, 10h38

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