import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import org.apache.xerces.parsers.DOMParser; import org.w3c.dom.*; import org.xml.sax.*; import org.xml.sax.helpers.*; public class LhairesXMLserv extends HttpServlet{ //Global variables PrintWriter out; String xmlURL = "http://tecfa.unige.ch/staf/staf-e/lhaires/staf2x/example.xml"; int after = 0; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { setPrintWriter(response.getWriter()); out.println("Error: don't use GET requests"); } protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); setPrintWriter (response.getWriter()); try { out.println("Matériel"); out.println("

Matériel

"); String rep = request.getParameter("url"); if (rep == null | rep.equals("")){ out.println("

No file specified: processing default file "); out.println("" + xmlURL + "

"); processXml(xmlURL); } else processXml(rep); } catch (Exception e){ out.println("
Exception found:");
	      out.println(e.getMessage());
	      e.printStackTrace(out);
	      out.println("
"); } } public void processXml(String file){ try { // create a handler DOMParser parser = new DOMParser(); // DO IT parser.parse(file); Document doc = parser.getDocument(); Element root = (Element)doc.getDocumentElement(); out.println(""); out.println(""); displayTree(root); closeFile(); } catch (SAXParseException e) { out.println("
The File is not well formed.");
	      out.println(e.getMessage()
			  + " at line " + e.getLineNumber() 
			  + ", column " + e.getColumnNumber() + "
"); } catch (SAXException e) { out.println("
SAX exception found");
	      out.println(e.getMessage());
	      e.printStackTrace(out);
	      closeFile();
	  }
	  catch (IOException e) {
	      out.println("
IOException " + e + "
"); } } public void displayTree(Node node){ if (node != null){ String name = node.getNodeName(); if (name != null){ if (name.equalsIgnoreCase("article")){ if (after == 0) out.println("
"); else out.println(""); after = 1; } else if (name.equalsIgnoreCase("nom")){ out.println("
ArticleDescriptionFournisseurItems in stockPrize in SFR
"); } else if (name.equalsIgnoreCase("descr")){ out.println("
    "); } else if (name.equalsIgnoreCase("tailles")) out.println("
  • Tailles: "); else if (name.equalsIgnoreCase("couleurs")) out.println("
  • Couleurs: "); else if (name.equalsIgnoreCase("marque")) out.println("
  • Marque: "); else if (name.equalsIgnoreCase("divers")) out.println("
  • "); else if (name.equalsIgnoreCase("fournisseur")){ out.println("
"); } else if (name.equalsIgnoreCase("stock")) out.println(""); else if (name.equalsIgnoreCase("prix")) out.println(""); } else out.println("empty node!!!"); Node ch = node.getFirstChild(); if (ch != null){ String val = ch.getNodeValue(); val = val.trim(); if (! val.equals("")) out.println(val); if (node.hasChildNodes()){ NodeList nodes = node.getChildNodes(); int nodesNr = nodes.getLength(); for (int i = 0; i < nodesNr; i++) displayTree(nodes.item(i)); } } } else out.println("Null found"); } public void closeFile(){ out.print("
"); out.close(); } public void setPrintWriter(PrintWriter pw) // important, else the other methods can't access out (I think) { out = pw; } }