Bonjour,
J'aimerai parcourir un fichier XML dans mon servlet et l'afficher ds mon navigateur.
Pour ce qui est de parcourir un fichier XML, j'ai suivi le tuto de Nicolas CYNOBER sur ce site que j'ai adapté pour l'utilisé ds un servelt.
Voici le code adapté :
Tout fonctionne sauf l'affichage sur ma page.
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 package pkg.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import org.jdom2.*; import org.jdom2.input.*; import org.jdom2.filter.*; import java.util.List; import java.util.Iterator; public class XMLServlet extends HttpServlet { static org.jdom2.Document document; static Element racine; protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { //On crée une instance de SAXBuilder SAXBuilder sxb = new SAXBuilder(); try { //On crée un nouveau document JDOM avec en argument le fichier XML //Le parsing est terminé ;) document = sxb.build(new File("Y:\\file.xml")); } catch(Exception e){} //On initialise un nouvel élément racine avec l'élément racine du document. racine = document.getRootElement(); //Méthode définie dans la partie 3.2. de cet article afficheALL(); } finally { out.close(); } } static void afficheALL() { //On crée une List contenant tous les noeuds "etudiant" de l'Element racine List listEtudiants = racine.getChildren("etudiant"); //On crée un Iterator sur notre liste Iterator i = listEtudiants.iterator(); while(i.hasNext()) { //On recrée l'Element courant à chaque tour de boucle afin de //pouvoir utiliser les méthodes propres aux Element comme : //sélectionner un nud fils, modifier du texte, etc... Element courant = (Element)i.next(); //On affiche le nom de lélément courant out.println(courant.getChild("nom").getText()); } } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } @Override public String getServletInfo() { return "Short description"; }// </editor-fold> }
La méthode afficheALL() ne reconnait pas ma variable out déclarée ds la méthode processRequest
Si quelqu’un pouvait me mettre sur la voie
Merci d'avance !
Partager