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

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Bon ben avec les bouts partiels que tu donne, qu'est-ce qui t'empêhe de faire une servlet qui fasse en gros ceci:



    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
     
    public void doGet(HttpServletRequest req, HttpServletResponse resp) {
      String critere = req.getParameter("airbus");
      Airbus airbus =  dao.getLesData(critere);
      Element racine = new Element("airbus");
      for (Bracket bracket : airbus.getBrackets()){
          Element b = new Element("bracket");
          racine.addContent(b);
          for (int i = 0; i< bracket.getParts().size(); i++){
             Element part = new Element("partsRef"+i);
             b.addContent(part);
             part.setText( bracket.getParts().get(i));
          }
          // etc à compléter avec tout ce qu'il te manque.
      }
    }
    //...
    XMLOutputersortie = new XMLOutputer(Format.getPrettyFormat());
    resp.setContentType("text/xml");
    sortie.output(document,resp.getOutputStream());
    A noter que nommer des noeuds de ton xml "partsRef1", "partsRef2","partsRef3","partsRef4","partsRef5",... C'est pas très xml comme manière de faire, on préfère garder le même nom, rien n'empêche d'avoir plusieurs noeuds de même nom dans un parent en xml. Et on vois bien qu'il y a un 1 2 3 4 5 6 7 en les comptant à la lecture.

  2. #22
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut Réponse aux commentaires
    En fait, j'arrive à récupérer ma/mes lignes de ma JSP en JQuery en affichant celle-ci en console ou dans un alert() quelquesoit le nb de ligne affichée.
    Ca c'est cool. MAis ce n'est pas la solution que je recherche.
    J'aimerai récupérer la/les lignes (ayant parlé avec un collègue), via une requête AJAX, cette requête AJAX la récupérer dans ma servlet sûrement dans la méthode DoPost(), car dans doPost() je souhaite produire un fichier XML avec la/les lignes de mon tableau.

    Donc mon problème n'est toujours pas résolu !

  3. #23
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut Réponse aux commentaires
    Bon j'arrive à récupérer ma/mes lignes de mon tableau affichées dynamiquement via JQuery. En fait, j'arrive à les afficher dans un alert() !
    Comment puis-je faire pour récupérer ce résultat, l'envoyer dans ma servlet ? La servlet reçoit ces infos, et met ces infos dans un fichier XML !!!

    J'ai essayé de mettre une requête AJAX à l'intérieur de ma requête JQuery pour envoyer les infos dans ma servlet mais j'y arrive pas !!! Ci-dessous, mon code avec Jquery et AJAX : (Dans ma servlet DoPost je pense, j'ai rien dc je met pas le code) :

    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
    39
    40
    41
    42
    43
    44
    45
    46
    jQuery(document).ready(function($){
     
    $("#creationXML").click(function(){
    	var res = "";
    	var message = "You can find the XML File on your desktop !  "; 
    	$('#table tbody > tr').each(function(){
     
    		var area= $(this).find(".area").html();
    		var position= $(this).find(".position").html();
    		var elecroute= $(this).find(".elecroute").html();
    		var bsolution1= $(this).find(".bsolution1").html();
    		var bsolution2= $(this).find(".bsolution2").html();
    		var bsolution3= $(this).find(".bsolution3").html();
    		var bsolution4= $(this).find(".bsolution4").html();
    		var bsolution5= $(this).find(".bsolution5").html();
    		var ref= $(this).find(".ref").html();
    		var partsRef1= $(this).find(".partsRef1").html();
    		var partsRef2= $(this).find(".partsRef2").html();
    		var partsRef3= $(this).find(".partsRef3").html();
    		var partsRef4= $(this).find(".partsRef4").html();
    		var partsRef5= $(this).find(".partsRef5").html();
    		var partsRef6= $(this).find(".partsRef6").html();
    		var partsRef7= $(this).find(".partsRef7").html();
     
    		res += "area:" + area + "," + "position:" + position + "," + "elecroute:" + elecroute + "," + "bsolution1:" + bsolution1 + ","
    		+ "bsolution2:" + bsolution2 + "," + "bsolution3:" + bsolution3 + "," + "bsolution4:" + bsolution4 + "," +"bsolution5:" 
    		+ bsolution5 + "," +"ref:" + ref + "," +"partsRef1:" + partsRef1 + "," + "partsRef2:" + partsRef2 + "," + "partsRef3:"
    		+ partsRef3 + "," + "partsRef4:" + partsRef4 + ","
    		+ "partsRef5:" + partsRef5 + "," + "partsRef6:" + partsRef6  + "," + "partsRef7:" + partsRef7 ;
     
    	});
    	$.ajax({
    		url : 'AffichageXML',	/* Soit on POST vers un fichier(.php ; .... ou soit on peut mettre le nom de la servlet) */
    		type : 'POST',			/* je vais envoyer à la servlet les données du tableau pr créer dans la servlet(DoPost) le fichier XML */
    		dataType: 'html',
    		data : {data : JSON.stringify(res)},
    		success : function(returnData) {
    			/*var data = $.parseJSON(returnData);*/
    			$('#zone').html("area");
    		}
    	});
    	/*console.log(res);*/
    	alert(res + "\n\n" + message + "\n");
      });
     
    });

  4. #24
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut Réponse aux commentaires
    Bon j'arrive à récupérer ma/mes lignes de mon tableau affichées dynamiquement via JQuery. En fait, j'arrive à les afficher dans un alert() !
    Comment puis-je faire pour récupérer ce résultat, l'envoyer dans ma servlet ? La servlet reçoit ces infos, et met ces infos dans un fichier XML !!!

    J'ai essayé de mettre une requête AJAX à l'intérieur de ma requête JQuery pour envoyer les infos dans ma servlet mais j'y arrive pas !!! Ci-dessous, mon code avec Jquery et AJAX : (Dans ma servlet DoPost je pense, j'ai rien dc je met pas le code) :

    Code JavaScript : 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
    39
    40
    41
    42
    43
    44
    45
    46
    jQuery(document).ready(function($){
     
    $("#creationXML").click(function(){
    	var res = "";
    	var message = "You can find the XML File on your desktop !  "; 
    	$('#table tbody > tr').each(function(){
     
    		var area= $(this).find(".area").html();
    		var position= $(this).find(".position").html();
    		var elecroute= $(this).find(".elecroute").html();
    		var bsolution1= $(this).find(".bsolution1").html();
    		var bsolution2= $(this).find(".bsolution2").html();
    		var bsolution3= $(this).find(".bsolution3").html();
    		var bsolution4= $(this).find(".bsolution4").html();
    		var bsolution5= $(this).find(".bsolution5").html();
    		var ref= $(this).find(".ref").html();
    		var partsRef1= $(this).find(".partsRef1").html();
    		var partsRef2= $(this).find(".partsRef2").html();
    		var partsRef3= $(this).find(".partsRef3").html();
    		var partsRef4= $(this).find(".partsRef4").html();
    		var partsRef5= $(this).find(".partsRef5").html();
    		var partsRef6= $(this).find(".partsRef6").html();
    		var partsRef7= $(this).find(".partsRef7").html();
     
    		res += "area:" + area + "," + "position:" + position + "," + "elecroute:" + elecroute + "," + "bsolution1:" + bsolution1 + ","
    		+ "bsolution2:" + bsolution2 + "," + "bsolution3:" + bsolution3 + "," + "bsolution4:" + bsolution4 + "," +"bsolution5:" 
    		+ bsolution5 + "," +"ref:" + ref + "," +"partsRef1:" + partsRef1 + "," + "partsRef2:" + partsRef2 + "," + "partsRef3:"
    		+ partsRef3 + "," + "partsRef4:" + partsRef4 + ","
    		+ "partsRef5:" + partsRef5 + "," + "partsRef6:" + partsRef6  + "," + "partsRef7:" + partsRef7 ;
     
    	});
    	$.ajax({
    		url : 'AffichageXML',	/* Soit on POST vers un fichier(.php ; .... ou soit on peut mettre le nom de la servlet) */
    		type : 'POST',			/* je vais envoyer à la servlet les données du tableau pr créer dans la servlet(DoPost) le fichier XML */
    		dataType: 'html',
    		data : {data : JSON.stringify(res)},
    		success : function(returnData) {
    			/*var data = $.parseJSON(returnData);*/
    			$('#zone').html("area");
    		}
    	});
    	/*console.log(res);*/
    	alert(res + "\n\n" + message + "\n");
      });
     
    });

  5. #25
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut Réponse aux commentaires
    Je vais mettre mon code pour que ca soit plus clair pour tout le monde.
    Dans la méthode doPost() de ma servlet, j'arrive à générer un fichier XML mais avec ce que j'ai mis dedans au niveau de :
    " Attribute att = new Attribute("name","TypeFus Pax Floor");

    A la place de ça, je souhaite que ma servlet récupère la/les lignes affichées dans ma JSP (qui je le rappelle changent suivant le filtre appliqué)
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
     
          String path = request.getServletPath();
     
    		if (path.equals("/CreationXML")) {
     
    			/* Création de la racine */
    			Element racine = new Element("airbus");
     
    			/* Création d'un doc basé sur la racine */
    			Document document = new Document(racine);
     
    			Element bracket = new Element("bracket");
    			racine.addContent(bracket);
     
    			/* Traitement pour rajouter les attributs aux divers Elements */
    			Attribute attribut1 = new Attribute("id", "1");
    			bracket.setAttribute(attribut1);
     
    			Element area = new Element("area");
    			bracket.addContent(area);
    			Attribute att = new Attribute("name", "TypeFus Pax Floor");
    			area.setAttribute(att);
     
    			Element position = new Element("position");
    			bracket.addContent(position);
    			Attribute pos = new Attribute("name", "On Crossbeams");
    			position.setAttribute(pos);
     
    			Element elecroute = new Element("elecroute");
    			bracket.addContent(elecroute);
    			Attribute el = new Attribute("name", "(59) Supplemental Cooling");
    			elecroute.setAttribute(el);
     
    			Element bsolution = new Element("bsolution");
    			bracket.addContent(bsolution);
    			Attribute bsolutionName = new Attribute("name", "E002-1");
    			bsolution.setAttribute(bsolutionName);
     
    			Element picture = new Element("picture");
    			bsolution.addContent(picture);
    			Attribute pic = new Attribute("path", "E002-1.png");
    			picture.setAttribute(pic);
     
    			Element partsRef1 = new Element("partsRef1");
    			bsolution.addContent(partsRef1);
    			Attribute part1 = new Attribute("name", "ABS1423JA32-1");
    			partsRef1.setAttribute(part1);
     
    			Element partsRef2 = new Element("partsRef2");
    			bsolution.addContent(partsRef2);
    			Attribute part2 = new Attribute("name", "ABS0998T2");
    			partsRef2.setAttribute(part2);
     
    			Element partsRef3 = new Element("partsRef3");
    			bsolution.addContent(partsRef3);
    			Attribute part3 = new Attribute("name", "ABS0999-2");
    			partsRef3.setAttribute(part3);
     
    			Element partsRef4 = new Element("partsRef4");
    			bsolution.addContent(partsRef4);
    			Attribute part4 = new Attribute("name", "ABS1339D01");
    			partsRef4.setAttribute(part4);
     
    			Element partsRef5 = new Element("partsRef5");
    			bsolution.addContent(partsRef5);
    			Attribute part5 = new Attribute("name", "NAS1149C0332R");
    			partsRef5.setAttribute(part5);
     
    			Element partsRef6 = new Element("partsRef6");
    			bsolution.addContent(partsRef6);
    			Attribute part6 = new Attribute("name", "NSA5191-3**");
    			partsRef6.setAttribute(part6);
     
    			Element partsRef7 = new Element("partsRef7");
    			bsolution.addContent(partsRef7);
    			Attribute part7 = new Attribute("name", "NSA935401-05");
    			partsRef7.setAttribute(part7);
     
    			/* Enregistrement */
    			XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
    			try {
    				sortie.output(document, new FileOutputStream("C:\\Doc_XML\\TestAirbusJEE.xml"));
    			} catch (FileNotFoundException e) {
    				e.printStackTrace();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
     
    		} // Fin du if
     
    		request.getRequestDispatcher("resultatLigneTab.jsp").forward(request, response);
     
    }
    Et dans ma JSP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form action="RecupLignes" method=get>	
    		<button type="submit" name="recupLigne" id="creationXML" class="btn btn-primary">Afficher lignes recupérées</button> 
       </form>

  6. #26
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Je n'ai pas tout compris ce qu'on a apporté tout au long de discussion: mais je vois deux problèmes dans les dernières postes.

    [1] Dans la formation de la forme, il me semble tout à fait bizarre qu'on fait un élément button type='submit'. ¨Pour moi, il devrait écrire plutôt comme un élément input type='submit' avec une valeur...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form action="RecupLignes" method="get">
        <!--
        <button type="submit" name="recupLigne" id="creationXML" class="btn btn-primary">Afficher lignes recupérées</button>
        -->
        <input type="submit"  name="recupLigne" id="creationXML" class="btn btn-primary" value="Afficher lignes recupérées" />
    </form>
    Il se peut être équivalent selon des w3c recommandations mais la dernière me rend plus de confort. En tout cas, à cette position-là, le type du tag button serait par défaut "submit". En fin de compte, ce n'est pas très grave, tout ça.

    [2] Ici, c'est le problématique principal: puisque vous voulez intercepter et en un sens remplacer la fonctionnalité du bouton par un dialogue plutôt type ajax, il est tout à fait nécessaire d'aller juste au bout en faisant faire décommissionner l'action de soumission de la forme, si non la forme va soumettre une donnée d'"Afficher lignes recupérées" au lieu des données provenant du tableau. On peut le faire comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    jQuery(document).ready(function($){
     
        //$("#creationXML").click(function(){
        $("#creationXML").click(function(e){
            e.preventDefault();    //ajouter ceci; e: l'événement click
    	var res = "";
            //etc... les mêmes
        });
     
    });
    Voilà !

  7. #27
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut Réponse aux commentaires
    Merci tsuji pour ta réponse.

    Effectivement, tu as raison au niveau du bouton : j'ai modifié.

    Tu t'y connais en JEE ?
    En fait, comme expliqué dans mon dernier post, dans ma servlet pour le moment ce qu'elle fait c'est qu'elle me crée bien mon fichier XML quand je clique sur le bouton, donc y a un traitement dans la servlet qui se fait, donc ca c'est parfait, mais ce que je n'arrive pas faire, c'est à la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Element area = new Element("area");
    			bracket.addContent(area);
    			Attribute att = new Attribute("name", "TypeFus Pax Floor");
    			area.setAttribute(att);
    ---> A la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Attribute att = new Attribute("", "");
    ---------------> recupérer la valeur des lignes affichées dans ma JSP.

    J'espère avoir été assez clair. En effet, lorsqu'on veut récupérer une valeur d'un formulaire on fait(dans la servlet) : request.getParameter("valeur");
    mais pour un tableau ET C EST LA OU JE BLOQUE, je ne sais pas du tout. Je trouve rien sur le net !!! Je suis désespéré, et en plus y a presque qui réponds sur ce forum !!!

  8. #28
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut Réponse aux commentaires
    Au fait, j'ai trouvé ce site web qui explique bien comment lire un fichier XML et l'afficher en page Web, mais je ne trouve rien sur le fait de produire un fichier XML à partir d'un tableau HTML dynamique : https://www.w3schools.com/js/js_ajax_xmlfile.asp

  9. #29
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Pour créer un document xml avec et d'après les données postées, il faut tout d'abord réussir à saisir les bonnes données, n'est-ce pas? As-tu modifié le script ajax selon ce que j'ai dit en [2] ? Une fois le servlet a obtenu la bonne valeur de "data" posté qui serait une chaîne de caractère en format de json (String data=request.getParameter("data")), on peut faire sortir les clés-valeurs et utiliser ces données durant la création du xml. Est-ce que tu as verifié ça ? A la limite, fait echo data comme réponse comme tel et la partie client devrait montrer dans le contrôle (un textarea ? ou une div ? sais pas) avec id="zone".

  10. #30
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut Réponse aux commentaires
    Merci pour ta réponse. En fait, j'ai pas trop compris ce que tu m'a dit en [2]. Ayant parlé avec un collègue, il m'a dit qu'AJAX ne servait à rien. AJAX sert juste à rafraichir une partie de la page, or ce fonctionnement ne sert à rien dans mon application. Est ce que tu as lu mon dernier commentaire où j'explique très clairement ma problématique avec le code de ma servlet (là ou j'ai les données en dur dans mon code) ?
    Ca me produit bien le fichier XML avec ces données en dur mais moi j'aimerai que ca me récupère la/les lignes de ma JSP.
    Si t'a des idées par rapport à ça, je suis preneur.

    Au fait, j'ai changé un peu mon code, je ne veux plus afficher les lignes affichées dans un textarea !

  11. #31
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Non, AJAX ne sert pas qu'à rafraîchir une partie de la page. AJAX c'est un moyen d'invoquer une URL sans recharger la page. On peut invoquer une URL en AJAX sans rien changer dans la page. On peut invoquer une action serveur en AJAX, dont le retour est un binaire, pour télécharger une image par exemple. On peut faire tout ce qu'on fait via la barre d'adresse du navigateur mais sans recharger la page.

    Dans ton cas, AJAX pourrait servir à envoyer le tableau (ou une représentation) vers le serveur : et ça ne sert à rien. Comme je l'ai déjà dit, les données sont connues du serveur puisque c'est bien côté serveur que le html du tableau est produit à partir des données. Et donc tu peux produire le XML côté serveur, l'écrire dans le flux, avec le content type adéquate, et le sauvegarder sur le poste du client comme n'importe quelle pièce jointe. On peut le faire dans une JSP (à la place de balises html, on met des balises xml (et le bon content-type).
    En revanche, comme le tableau est affiché dans la page, donc côté client, et que le but est de le sauvegarde côté client (ce que tu n'avais pas dit au début), tu peux effectivement le récupérer via JQuery (ou JavaScript directement) et le stocker sur le poste du client. Mais c'est inutile de l'envoyer au serveur pour qu'on le récupère ensuite côté client : ce n'est que la consommation de bande passante (à moins qu'il n'y ait un traitement intermédiaire à faire côté serveur).
    Exemple 100% client avec JQuery :
    [EDIT]Attention, il y a une erreur du rendu qui rend se code non fonctionnel (voir code complet ici).
    Code html : 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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    <!DOCTYPE html>
    <html lang="fr">
    <head>
      <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
      <title>Démo sauvegarde d'une table en xml</title>
      <style>
        table {border-collapse: collapse; }
            table, td {border: 1px solid black;}
            td {padding: 5px;}
            #buttonToolBar {padding: 5px 0;} 
      </style>
      <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> 
    </head>
    <body>
    	<div id="buttonToolBar">
    		<button type="button" id="buttonSave">Sauver en XML</button>
        </div>
    	<table id="matable">
    		<thead>
    			<td>col 1</td>
    			<td>col 2</td>
    			<td>col 3</td>
    		</thead>
    		<tbody>
    			<tr>
    				<td>1</td>
    				<td>2</td>
    				<td>3</td>
    			</tr>
    			<tr>
    				<td>a</td>
    				<td>b</td>
    				<td>c</td>
    			</tr>
    			<tr>
    				<td>truc</td>
    				<td>machin</td>
    				<td>bidule &amp; &lt;bidule&gt;</td>
    			</tr>
    		</tbody>
    	</table>
    	<script type="text/javascript">
                        function encodeAndEscapeXML(string) { 
                                if ($.trim(string) != "") {
                                    string = string.replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "'");
                                    string = string.replace(/&(?!(amp;)|(lt;)|(gt;)|(quot;)|(#39;)|(apos;))/g, "&amp;");
                                    string = string.replace(/([^\\])((\\\\)*)\\(?![\\/{])/g, "$1\\\\$2");  //replaces odd backslash(\\) with even.
                                }
                                else {
                                    string = "";
                                }
                            return string;
                        }
                            function tableToXML(selector) {
                var xml = "<table>";
                            $(selector) .find("tr").each(
                                    function() {
                                            xml += "<row>";
                                            $(this).find("td").each(
                                                    function() {
                                                            xml+= "<col>" + encodeAndEscapeXML($(this).html()) + "</col>";
                                                                       });  
                                                    xml += "</row>";
                                            } );
                            xml += "</table>";
                            return xml;
                    } 
            function saveXMLFile (name, data) {
                    saveFile(name, 'text/xml, application/xml', data);
            }
            function saveFile (name, type, data) {
                                if (data != null && navigator.msSaveBlob)
                                    return navigator.msSaveBlob(new Blob([data], { type: type }), name);
                                var $a = $("<a style='display: none;'/>");
                                var url = window.URL.createObjectURL(new Blob([data], {type: type}));
                                $a.attr("href", url);
                                $a.attr("download", name);
                                $("body").append($a);
                                $a[0].click();
                                window.URL.revokeObjectURL(url);
                                $a.remove();
                    }
            $( document ).ready(function() {
     
     
                    $("#buttonSave").click(function() {
                            saveXMLFile("matable.xml", tableToXML("#matable"));
     
                    });
     
     
                    });
                    
            </script>
    </body>
    </html>

    Pour les autres questions concernant les aspects client, va plutôt dans l'un des sous-forums du forum Développement Web Client.
    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.

  12. #32
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut Réponse aux commentaires
    Je vais mettre des captures d'écran du résultat de ma JSP ainsi que du code de ma servlet, ca sera plus parlant
    JSP :
    Nom : JSP.png
Affichages : 209
Taille : 482,7 Ko

    Quand j'appuie sur "Créer Fichier XML", le traitement dans ma servlet s'execute bien et me produit bien le XML mais en fonction du code en dur (et non en fonction de ce qui s'affiche réellement sur ma JSP)
    Servlet :
    Nom : Debut-Servlet.png
Affichages : 186
Taille : 96,8 Ko

    LA QUESTION CENTRALE DE MON SUJET, C EST COMMENT RECUPERER LES LIGNES DE MA JSP ?
    Est ce que je dois dans les méthodes définies dans mon DAOimpl faire une méthode pour récupérer au moins 1/2 lignes, et si oui comment ? Comme ca je fais la même procédure que pour afficher tout ce que j'ai dans ma BDD et pour filtrer.
    Je vous montre une méthode implémentée dans ma DAOimpl : "Méthode qui permet de filtrer en fonction de ce que je met dans 2 labels (ref et Bsolution1) :
    Nom : DAOImpl.png
Affichages : 167
Taille : 143,7 Ko

  13. #33
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Tu peux utiliser la balise code au lieu d'images ou de fichier MsWord, s'il te plait. Ce serait plus facile à consulter, et surtout pour faire des copier-coller.

    Là, finalement tu me montres le code correspondant à ce que je t'avais répondu dans mes premières réponses... et c'est bien comme ça qu'il faut faire si tu procèdes côté serveur (bon, je dis pas pour le BeanXML, je ne sais pas ce que c'est). Il n'y a pas à récupérer quoique ce soit dans la JSP, qui n'est qu'un script, ni même dans la page HTML qui est générée par ce script. Pour récupérer les paramètres de filtre saisis dans la page côté client, il te suffit d'un form, qui fait un post direct ou en AJAX (pour éviter de recharger la page html).
    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.

  14. #34
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut Réponse aux commentaires
    J'ai testé ca : (ca n'a pas fonctionné)

    Nom : 1erTest.png
Affichages : 152
Taille : 22,4 Ko

    Message d'erreur dans le navigateur :

    Nom : MessErreur.png
Affichages : 168
Taille : 35,6 Ko

  15. #35
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Du texte !!! A bas les copies d'écran !!!

    L'erreur te dit que le paramètre de nom area est null et qu'on ne peut créer un élément XML ou JSON de nom null !
    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.

  16. #36
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut Réponse aux commentaires
    Merci Joel pour ta réponse. Mon BeanXML est mon BEAN qui représente mes données en BDD comme on le fait habituellement dans une application JEE.

  17. #37
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par fredbubu65 Voir le message
    Mon BeanXML est mon BEAN qui représente mes données en BDD
    Oui ça je m'en doute bien. Ce que je veux (voulais) dire, c'est que n'ayant qu'un nom de classe, je ne peux pas être sûr à 100% que ça fait bien ce que je pense que ça fait, ou donner de réponses précises sur le code, ou avec des exemples de code, tout ça.


    Citation Envoyé par fredbubu65 Voir le message
    comme on le fait habituellement dans une application JEE.
    Moui, ça, c'est encore autre chose. Y'a des milliards de façon habituelle de faire des trucs. Sans avoir un code explicite et clair (et documenté), ou une référence d'API et de classe (une javadoc), ou un schéma UML à la rigueur, tout le reste n'est que divination, hypothèse et/ou conjecture.
    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.

  18. #38
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut Réponse aux commentaires
    Joel je réponds à ton post d'aujourd'hui à 14h08 concernant ton fichier HTML avec le script AJAX qui permet de récupérer les lignes du tableau et d'enregistrer cela dans un fichier XML. En effet, j'ai testé ce code, mais chez moi il ne fonctionne pas ! Est ce qu'il faut que je l'adapte ?
    Quel est l'endroit où s'enregistre le fichier XML ? (car je ne le voit pas dans le code).
    En tout cas merci pour ton implication, je suis débutant c'est pour ça que je galère autant et excuse moi pour les captures d'écran !!!

  19. #39
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par fredbubu65 Voir le message
    Joel je réponds à ton post d'aujourd'hui à 14h08 concernant ton fichier HTML avec le script AJAX
    Il n'y a pas d'AJAX dans le script que j'ai mis dans mon post de 14h08.


    Citation Envoyé par fredbubu65 Voir le message
    qui permet de récupérer les lignes du tableau et d'enregistrer cela dans un fichier XML. En effet, j'ai testé ce code, mais chez moi il ne fonctionne pas !
    Qu'est-ce que ça veut dire ne fonctionne pas ? S'il y a une erreur, il faut me donner le message d'erreur.

    En l’occurrence, il fonctionne très bien, sauf peut-être avec des vieux navigateurs ou des navigateurs qui ne font pas partis des standards. (il faut être aussi connecté à Internet parce que l'import JQuery est fait directement sur leur URL).

    La preuve en vidéo, avec Edge :


    Citation Envoyé par fredbubu65 Voir le message
    Est ce qu'il faut que je l'adapte ?
    Bien sûr, parce que c'est un fichier html indépendant avec un tableau en dur et un nom de fichier en dur, une structure xml en dur. Mais la partie JavaScript/JQuery est standard (j'ai fait une fonction, donc c'est facile à intégrer).

    Citation Envoyé par fredbubu65 Voir le message
    Quel est l'endroit où s'enregistre le fichier XML ?
    A l'endroit où le fait le navigateur. Ça dépend du navigateur et de la façon dont il est configuré. De toute manière, même s'il était téléchargé depuis le serveur, ce serait pareil. Dans mon cas par exemple, sur Chrome, il va dans le dossier Téléchargement de mon navigateur.
    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.

  20. #40
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut Réponse aux commentaires
    En fait, j'ai réussi à l'executer mais en mettant la 1ère ligne du if en commentaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function encodeAndEscapeXML(string) { 
                                if ($.trim(string) != "") {
                                   /* string = string.replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, """).replace(/'/g, "'");*/
                                    string = string.replace(/&(?!(amp;)|(lt;)|(gt;)|(quot;)|(#39;)|(apos;))/g, "&amp;");
                                    string = string.replace(/([^\\])((\\\\)*)\\(?![\\/{])/g, "$1\\\\$2");  //replaces odd backslash(\\) with even.
                                }
                                else {
                                    string = "";
                                }
                            return string;
                        }
    Par contre, comment il faut faire pour indenter correctement le fichier XML produit car il s'affiche sur une seule ligne ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <table><row><col>col 1</col><col>col 2</col><col>col 3</col></row><row><col>1</col><col>2</col><col>3</col></row>.........

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

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