Affichage d'un XML par un servlet
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é :
Code:
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>
} |
Tout fonctionne sauf l'affichage sur ma page.
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 !