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 :

Transformation XSL avec Java


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2014
    Messages : 9
    Par défaut Transformation XSL avec Java
    Bonjour,

    ma page jsp permet de telecharger des fichiers xml, je veux reccupérer le fichier et faire une transformation xml html au niveau de la methode post de la servlet .

    Voici le code que j'ai essayé ( et qui ne marche pas) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
       try {
          String xmlFile = request.getParameter("fichier");
          Source xmlInput = new StreamSource(new File(xmlFile));
          Source xsl = new StreamSource(new File("fichxsl.xsl"));
          Result xmlOutput = new StreamResult(new File("visualisation.jsp"));
          Transformer transformer = TransformerFactory.newInstance().newTransformer(xsl);
          transformer.transform(xmlInput, xmlOutput);
       } catch (TransformerException e) {
          // Handle.
       }
    }
    pouvez vous m'aider avec ça SVP?

    Je vous remercie d'avance pour toute contribution, c'est vraiment urgnet et très important pour moi.

  2. #2
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Déjà, ta sortie (xmloutput) n'a pas de sens. Tu lui demande d'écrire sur le disque dur un fichier appelé "visualisation.jsp", ficheir qui sera on ne sait même pas où. Aucun intérêt.

    Ensuite, à aucun moment tu n'utilise le response.getOutputStream(), donc le client n'est pas prêt de recevoir quoi que ce soit avec cette servlet.

  3. #3
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2014
    Messages : 9
    Par défaut
    Bonjour,

    En effectuant des recherches , j'ai complétement modifié le code de ma servlet, je parse le document xml et fait une transformation, mais ça ne marche toujours pas, quand je cherche le fichier xml et je valide j'ai toujours le même message d'erreur "Error 404--Not Found"

    Voici mon nouveau 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
    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
    97
    98
    99
    100
    101
     
    package edi;
     
    import javax.servlet.*;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.*;
     
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.FactoryConfigurationError;
    import javax.xml.parsers.ParserConfigurationException;
    import org.xml.sax.SAXException;
    import org.xml.sax.SAXParseException;
    import org.w3c.dom.Document;
    import org.w3c.dom.DOMException;
     
    // For write operation
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerException;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.TransformerConfigurationException;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamSource;
    import javax.xml.transform.stream.StreamResult;
    import java.io.*;
     
     
    @WebServlet(name = "Validation", urlPatterns = { "/validation" })
    public class Validation extends HttpServlet {
        private static final String CONTENT_TYPE = "text/html; charset=windows-1252";
        static Document document;
     
        public void init(ServletConfig config) throws ServletException {
            super.init(config);
        }
     
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
                    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                   try {
                       String xmlfile=request.getParameter("fichier");
                       String xsltfile="C:\\Documents and Settings\\Administrateur\\Bureau\\test\\EDI3\\EDI";
                       File stylesheet = new File(xmlfile);
                       File datafile = new File(xsltfile);
     
                       DocumentBuilder builder = factory.newDocumentBuilder();
                       document = builder.parse(datafile);
     
                       // Use a Transformer for output
                       TransformerFactory tFactory = TransformerFactory.newInstance();
                       StreamSource stylesource = new StreamSource(stylesheet);
                       Transformer transformer = tFactory.newTransformer(stylesource);
     
                       DOMSource source = new DOMSource(document);
                       StreamResult result = new StreamResult(System.out);
                       transformer.transform(source, result);
                   } catch (TransformerConfigurationException tce) {
                       // Error generated by the parser
                       System.out.println("\n** Transformer Factory error");
                       System.out.println("   " + tce.getMessage());
     
                       // Use the contained exception, if any
                       Throwable x = tce;
     
                       if (tce.getException() != null) {
                           x = tce.getException();
                       }
     
                       x.printStackTrace();
                   } catch (TransformerException te) {
                       // Error generated by the parser
                       System.out.println("\n** Transformation error");
                       System.out.println("   " + te.getMessage());
     
                       // Use the contained exception, if any
                       Throwable x = te;
     
                       if (te.getException() != null) {
                           x = te.getException();
                       }
     
                       x.printStackTrace();
                   } catch (SAXException sxe) {
                       // Error generated by this application
                       // (or a parser-initialization error)
                       Exception x = sxe;
     
                       if (sxe.getException() != null) {
                           x = sxe.getException();
                       }
     
                       x.printStackTrace();
                   } catch (ParserConfigurationException pce) {
                       // Parser with specified options can't be built
                       pce.printStackTrace();
                   } catch (IOException ioe) {
                       // I/O error
                       ioe.printStackTrace();
                   }
        }
    }
    pouvez-vous m'indiquer svp d'où peut venir l'erreur? et comment je peux réctifier

  4. #4
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Quand tu dis que tu as un 404, c'est dans ton browser? Quel conteneur web? Quel web.xml? Quelle url tappée dans le browser? Quels sont les logs complet du serveur web?

    Quelques commentaires sur le code ci-dessous, mais çà ne joue pas directement car 404 signifie que le serveur ne sais même pas comment servir ta demande.



    Ceci m'a plus l'air d'un répertoire que d'un fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String xsltfile="C:\\Documents and Settings\\Administrateur\\Bureau\\test\\EDI3\\EDI";
    Tu semble avoir inversé le stylesheet et le xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                       File stylesheet = new File(xmlfile);
                       File datafile = new File(xsltfile);
    Donc là tu fais une servlet qui nécessite un formulaire en POST, pour n'y poster que le nom d'un fichier sur le serveur à parser, c'est bien ce que tu veux?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
                    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                   try {
                       String xmlfile=request.getParameter("fichier");
    Mauvais pratique d'aller tripatouiller l'exception pour trouver si il y a une cause éventuelle. Je ne sais pas d'où tu tiens cette pattern de codage des exceptions mais t'as l'air de la trimballer sur tout 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
    } catch (TransformerConfigurationException tce) {
                       // Error generated by the parser
                       System.out.println("\n** Transformer Factory error");
                       System.out.println("   " + tce.getMessage());
     
                       // Use the contained exception, if any
                       Throwable x = tce;
     
                       if (tce.getException() != null) {
                           x = tce.getException();
                       }
     
                       x.printStackTrace();
                   }
    Plus lisible et simple comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    } catch (TransformerConfigurationException tce) {
                       System.err.println("\n** Transformer Factory error");
                       tce.printStackTrace();
                   }

  5. #5
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2014
    Messages : 9
    Par défaut
    Hello forum;

    Citation Envoyé par tchize_ Voir le message
    Quelques commentaires sur le code ci-dessous, mais çà ne joue pas directement car 404 signifie que le serveur ne sais même pas comment servir ta demande.
    merci pour ta réponse, j'ai effectué toute les modifications suggérées, en plus j'avais une erreur dans le web.xml que j'ai rectifié.
    Citation Envoyé par tchize_ Voir le message
    Donc là tu fais une servlet qui nécessite un formulaire en POST, pour n'y poster que le nom d'un fichier sur le serveur à parser, c'est bien ce que tu veux?
    je ne saurais répondre à cette question, car c'est la seule manière de faire que je connais pour le moment, je tiens à préciser que je suis débutante.
    Ci-joint mon code corrigé, et le nouveau message d'erreur
    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
     
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
                    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                   try {
                       String xmlfile=request.getParameter("fichier");
                       String xsltfile="C:\\Documents and Settings\\Administrateur\\Bureau\\test\\EDI3\\EDI\\fichxsl.xsl";
                       File stylesheet = new File(xsltfile);
                       File datafile = new File(xmlfile);
     
                       DocumentBuilder builder = factory.newDocumentBuilder();
                       document = builder.parse(datafile);
     
                       // Use a Transformer for output
                       TransformerFactory tFactory = TransformerFactory.newInstance();
                       StreamSource stylesource = new StreamSource(stylesheet);
                       Transformer transformer = tFactory.newTransformer(stylesource);
     
                       DOMSource source = new DOMSource(document);
                       StreamResult result = new StreamResult(System.out);
                       transformer.transform(source, result);
                   } catch (TransformerConfigurationException tce) {
                       System.err.println("\n** Transformer Factory error");
                                          tce.printStackTrace();
                   } catch (TransformerException te) {
                       System.err.println("\n** Transformer Factory error");
                                          te.printStackTrace();
                   } catch (SAXException sxe) {
                       System.err.println("\n** Transformer Factory error");
                                          sxe.printStackTrace();
                   } catch (ParserConfigurationException pce) {
                       // Parser with specified options can't be built
                       pce.printStackTrace();
                   } catch (IOException ioe) {
                       // I/O error
                       ioe.printStackTrace();
                   }
        }
    }
    j'ai maintenant ce message :

    Error 500--Internal Server Error

    java.lang.NullPointerException
    at java.io.File.(File.java:251)
    at edi.Validation.doPost(Validation.java:43)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:751)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:844)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:341)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
    at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:137)
    at java.security.AccessController.doPrivileged(Native Method)
    at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)
    at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:460)
    at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:120)
    at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:217)
    at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:81)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
    at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:225)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3367)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3333)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
    at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2220)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2146)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2124)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1564)
    at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:254)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:295)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:254)

    Merci d'avance pour votre aide si précieuse <3

  6. #6
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par honesttrick Voir le message

    je ne saurais répondre à cette question, car c'est la seule manière de faire que je connais pour le moment, je tiens à préciser que je suis débutante.
    Ben pourtant, tu es la seule personne qui puisse répondre à cette question. On a déjà compris que la servlet doit transformer un xml. Soit. Il arrive comment ce xml? Tu va le poster par un fileupload? Tu va en copier/coller le contenu dans une textarea? Il sera déjà sur le serveur et tu veux juste choisir dans une liste le fichier à utiliser?

    Citation Envoyé par honesttrick Voir le message
    Ci-joint mon code corrigé, et le nouveau message d'erreur
    Ton message d'erreur indique un NullPointerException dans Validation.java ligne 43. Je suppose que c'est cette ligne?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                       File datafile = new File(xmlfile);
    [CODE]
    Dans ce cas ca veux dire que xmlfile est null et que donc tu n'a pas de paramètre "fichier" dans ta requête actuelle et je te renvoie donc à ma question précédente pour résoudre ce problème

Discussions similaires

  1. [SAX] [XSLT] Problème transformation XSL avec SAX et namespace
    Par thierry_b dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 17/12/2008, 14h24
  2. [XSLT] transformation xsl avec un fichier xml en utf8
    Par thierry_b dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 08/12/2008, 10h46
  3. [XSLT] Problème de transformation XSLT avec JAVA
    Par ploxien dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 28/09/2007, 16h47
  4. [XSLT]Transformer XSL avec du XSL
    Par belibech dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 23/07/2007, 15h18
  5. Transformation XSL avec Xalan : MalformedURIException ?
    Par Oscar Hiboux dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 28/03/2006, 01h47

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