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

Développement Web en Java Discussion :

Remplir fichier XML en fonction d'un tableau


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 106
    Par défaut Remplir fichier XML en fonction d'un tableau
    Bonjour à tous,

    Je vous expose ma problématique actuelle:

    je n'arrive pas à récupérer les valeurs d'un tableau HTML(JSP) de mon application Web (JEE), et faire en sorte de remplir un fichier XML structuré. J'ai déjà réussi avec un programme JAVA de créer un XML bien structuré et il fonctionne. Mais ici le cas est différent, je ne veux plus produire un fichier XML structuré, je veux le remplir avec les données de mon tableau. En fait, je vais devoir juste récupérer une seule ligne de mon tableau. Les données de ce tableau provienne de ma BDD locale.
    Par ex : Ma colonne 1 corresponds à ma première branche de mon XML, colonne2-->2ème branche, etc ...
    Cette génération de ce fichier XML, j'aimerai qu'elle se fasse grâce à un bouton.
    Honnêtement, je ne vois pas du tout comment faire, ça fait plusieurs jours que je cherche sur Google.
    Est ce qu'il faut que dans ma servlet, je fasse un "request.getValues()" ou .... ???

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    L'utilisateur peut-il modifier des données dans ce tableau ou ne fait-il que choisir une colonne à exporter dans le fichier ?

    Citation Envoyé par fredbubu65 Voir le message
    J'ai déjà réussi avec un programme JAVA de créer un XML bien structuré et il fonctionne. Mais ici le cas est différent, je ne veux plus produire un fichier XML structuré, je veux le remplir avec les données de mon tableau.
    Quelle différence y a t'il ? Tu as des données et tu les écris dans un fichier XML dans les deux cas. C'est la même chose. La différence est dans la façon de récupérer ces données, pas dans la production du xml.


    Citation Envoyé par fredbubu65 Voir le message
    Est ce qu'il faut que dans ma servlet, je fasse un "request.getValues()" ou .... ???
    Dans le principe, tu récupéreras ce que le client saisit par request.getParameter("param") (il y a d'autres méthodes sur HttpServletRequest selon les besoins). Côté page web, tu peux faire un form pour la sélection et l'envoi des valeurs saisies, ou de simples invocation d'URL (en ajax par exemple).
    Si les données du tableau ne sont pas modifiables, autant de pas les transmettre en paramètre : elles proviennent de ta base, tu les as à disposition dans le serveur.
    Si les données sont modifiables, et leur volume conséquent, on peut aussi envisager un envoi via le body. Dans ce cas, il faudra les lire avec une technique similaire à un upload de fichier.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 106
    Par défaut Réponse aux commentaires
    Bonjour,

    Merci pour vos réponses.

    L'utilisateur ne peut pas modifier les valeurs. C'est juste de l'affichage. En fait, j'aimerai que lorsque l'utilisateur appuie sur un bouton "Creer fichier XML", ce bouton appelle une méthode ou autre dans la servlet, et qu'ensuite ca créer le fichier XML en récupérant les données de la ligne affichée du tableau.

    J'ai rajouté en pièce jointe une capture d'écran pour vous montrer l'application. Si vous voulez d'autres détails concernant mon code de ma servlet, y a pas de soucis.
    Images attachées Images attachées  

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    1. Actuellement tu dois avoir une servlet qui produit un html à partir d'un paramètre saisi dans la zone de recherche, paramètre que tu dois récupérer avec un request.getParameter("name")
    2. si tu ajoutes un paramètre qui est ajouté seulement quand on clique sur le bouton du genre xml=true, il te suffit de faire dans la servlet quelque chose du genre :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
       
      String param = request.getParameter("name");
      if ( "true".equals(request.getParameter("xml")) {
           generateXML(request, response, param);
      }
      else {
           generateHTML(request, response, param);
      }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 106
    Par défaut Réponse aux commentaires
    J'ai testé mais j'y arrive pas. Comment dois-je faire pour récupérer la ligne entière du résultat de mon tableau ? (J'ai utilisé le modèle MVC)
    Pour afficher la liste complète de mon tableau, dans le modèle je déclare : private List<MonBean> liste = new ArrayList<Bean>();
    Dans ma DaoImpl : Méthode avec une requete sur ma BDD : select * from .... et dans la servlet :
    String refParts = request.getParameter("refParts");
    Modele modele = new Modele();
    modele.setRefParts(refParts);

    List<PartsRef> theListe = metier.afficherTout(refParts + "%");

    modele.setListeTableau(theListe);
    request.setAttribute("modele", modele);

    request.getRequestDispatcher("formulaire.jsp").forward(request, response);

    Cela fonctionne a merveille.
    Mais dans le bouton "CreateXML", je veux récupérer les lignes du résultat du filtre de mon 1er bouton (en général je n'ai qu'une ligne affiché), et alimenté un fichier XML. Comme je l'ai dit, j'aimerai que ma 1ere colonne corresponde à ma 1ère balise, etc
    Je suis débutant et je ne vois pas comment faire. A moins, que j'utilise un framework comme ANGULAR, et Angular me récupère la seule ligne affiché et me l'envoie dans un fichier XML !!!
    Qu'en pensez-vous ?

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    On s'en moque d'Angular ou tout ce que tu peux utiliser côté client. Cherche pas à récupérer des trucs dans le client (à part le paramètre de ta requête, ce que tu fais déjà pour générer ta page).
    Tu as bien actuellement une requête exécutée côté serveur qui génère ce que tu vas afficher dans ta page html, peu importe comment c'est. Tu parcours un ResultSet, tu lis des champs dedans pour chaque ligne..., ou tu obtiens tes données d'un Dao, dans un modèle ou je ne sais quoi, et bien ces données au lieu de les sérialiser dans le format que tu utilises pour l'afficher dans ton client (je sais ce que c'est, du json à priori si tu as un client Angular), et bien tu les serialises en xml.

    Pour le principe, si tu as, par exemple, un code comme ça pour la serialization en Json (ici, exemple avec Jackson et un ResultSet directement) :
    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
    26
    27
    28
    29
    30
    31
    	public static void toJSon(String param, HttpServletResponse response) throws SQLException {
     
    		try(OutputStream outputStream = response.getOutputStream()) {
    			try(ResultSet set = getResultSet(param)) {
     
    				response.setContentType("application/json");
    				JsonGenerator generator = new JsonFactory().createGenerator(outputStream);
     
    				generator.writeStartArray();
    				try {
    					while(set.next()) {
    						generator.writeStartObject();
    						try {
    							generator.writeStringField("name", set.getString("name"));
    							generator.writeNumberField("value", set.getInt("value"));
    							/* etc */
    						}
    						finally {
    							generator.writeEndObject();
    						}
    					}
    				}
    				finally {
    					generator.writeEndArray();
    				}
     
                                    generator.close();
    			}
    		}
     
    	}
    Et bah pour du XML (ici Stax)
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
     
    	public static void toXML(String param, HttpServletResponse response) throws SQLException {
     
    		try(OutputStream outputStream = response.getOutputStream()) {
    			try(ResultSet set = getResultSet(param)) {
     
    				response.setContentType("text/xml");
    				XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(outputStream);
     
    				writer.writeStartDocument();
    				writer.writeStartElement("rows");
    				try {
    					while(set.next()) {
    						writer.writeStartElement("row");
    						try {
    							writer.writeStartElement("name");
    							writer.writeCData( set.getString("name") );
    							writer.writeEndElement();
    							writer.writeStartElement("value");
    							writer.writeCharacters(String.valueOf(set.getInt("value")));
    							writer.writeEndElement();
    							/* etc */ 
    						}
    						finally {
    							writer.writeEndElement();
    						}
    					}
    				}
    				finally {
    					writer.writeEndElement();
    				}
    				writer.writeEndDocument();
     
    			}
    		}
     
    	}
    Ici, j'écris dans le flux de la réponse, mais tu peux écrire dans le flux d'un fichier... c'est pareil.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 09/01/2019, 21h23
  2. Afficher un fichier XML avec fonction JavaScript
    Par nicolas00123 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/01/2013, 13h27
  3. Réponses: 1
    Dernier message: 11/04/2012, 17h14
  4. Filtrer un fichier XML à l'aide d'un tableau
    Par LaBastoss dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 26/05/2011, 18h11

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