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 :

Parcours d'un objet java.util.List avec XSL


Sujet :

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

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Parcours d'un objet java.util.List avec XSL
    Bonjour à toutes et à tous,

    je rencontre quelques difficultés dans l'utilisation des objets java en XSL, je m'explique :

    je souhaiterai pouvoir parcourir un objet de type java.util.List dans une feuille de style et accéder aux propriétés des objets présents dans cette liste.

    Par exemple :
    - Template XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <root>
         <personne>
              <nom/>
              <prenom/>
         </personne>
    </root>
    - XML après transformation :
    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
     
    <root>
         <personne>
              <nom>AAA</nom>
              <prenom>BBB</prenom>
         </personne>
     
         <personne>
              <nom>CCC</nom>
              <prenom>DDD</prenom>
         </personne>
     
         <personne>
              <nom>EEE</nom>
              <prenom>FFF</prenom>
         </personne>
    </root>
    Chaque bloc personne étant lié à un objet de la liste passée en paramètre.

    Pour passer cette liste en paramètre, je sais faire... (utilisation de la méthode setParameter de l'objet javax.xml.transform.Transformer).

    J'ai cherché des solutions sur le net et par moi-même mais résultat : c'est un échec...

    Avez-vous une piste?

    J'espère avoir été clair dans mon explication.

    Cordialement,
    Vangy

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 619
    Points
    21 619
    Par défaut
    Euh... Ça marche pas du tout comme ça.

    Une transformation XSL transforme les données. Elle n'en injecte pas.

    Pour mettre une List d'élément dans un fichier XML, un ptit coup de JDOM et c'est réglé. Au pire tu peux parser ton template XML en un fragment XML (sans la racine), définir des xPaths vers lesquels injecter les différentes données, et insérer le tout en boucle dans un élément racine.

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Il vaux mieux commençer par convertir ta liste en Node DOM du genre :
    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
     
    Element root = document.createElement( "root" )
     
    for ( Personne p : l ) {
      Element personne = document.createElement( "personne" );
      Element nom = document.createElement( "nom" );
      Element prenom = document.createElement( "prenom" );
      personne.appendChild( nom );
      personne.appendChild( prenom );
      root.appendChild( personne );
    }
     
    ...
     
    DOMSource source = new DOMSource( root );
    TransformerFactory.newTransformer( "monXsl.xsl" ).transform( source, new StreamResult( "monResultat.xml" ) );

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    je rajouterais que pour remplir des templates xml à partir de données en mémoire java, des outils comme freemarker sont bien plus rapide et adapté que du xsl. Le rôle du xsl c'est de convertir du xml en un autre xml!

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <root>
      <#list people as individual>
         <personne>
              <nom>${individual.nom}</nom>
              <prenom>${individual.prenom}</prenom>
         </personne>
       </#list>
    </root>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Configuration cfg = new Configuration();
    cfg.setDirectoryForTemplateLoading(
            new File("/where/you/store/templates"));
    cfg.setObjectWrapper(new DefaultObjectWrapper());  
    Map root = new HashMap();
    root.put("people", listePersonnes);
    Template temp = cfg.getTemplate("tonTemplate.ftl");
    Writer out = new OutputStreamWriter(sortie);
    temp.process(root, out);
    out.flush();

Discussions similaires

  1. faces-config : value de type java.util.List
    Par DamienF dans le forum JSF
    Réponses: 7
    Dernier message: 27/09/2010, 10h36
  2. Débutant erreur avec import java.util.List
    Par speedyk62 dans le forum JSF
    Réponses: 7
    Dernier message: 14/07/2009, 00h24
  3. Problème avec java.util.List
    Par alphonse62 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 11/06/2007, 11h03
  4. required : java.util.List
    Par marcxa44 dans le forum Maven
    Réponses: 4
    Dernier message: 11/05/2007, 11h30
  5. Comment creer un objet java.util.List ?
    Par Battosaiii dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 02/11/2006, 12h14

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