Salve a tutti!!
Ho un piccolo problemino con jdom, in particolare con il parser..
Allora, il mio problema è:
ho un file xml da leggere
codice:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="relaz.xsl"?>
<relazioni>
<relazione>
<autore>dave83</autore>
<titolo>DAVE</titolo>
<data>22-1-2005--11.25.13</data>
<testo>qui puoi scrivere al tua relazione</testo>
<revisore>nessun revisore</revisore>
</relazione>
<relazione>
<autore>dave83</autore>
<titolo>xfsfsfsfs</titolo>
<data>22-1-2005--11.31.49</data>
<testo>qui puoi scrivere al tua relazione</testo>
<revisore>nessun revisore</revisore>
</relazione>
</relazioni>
da cui vorrei "tirar fuori", con un form html in cui scrivere il titolo, appunto la stringa scritta nel form.
Per esempio: nel form scrivo "DAVE", e vorrei che mi stampasse a video tutte le relazioni con titolo "DAVE"!!!
questa è la mia servlet:
codice:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.jdom.*;
import org.jdom.input.*;
import java.util.*;
import org.jdom.output.*;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import org.jdom.Comment;
import org.jdom.Document;
public class RicercaTitolo extends HttpServlet
{
public void service(HttpServletRequest req,
HttpServletResponse res)
throws ServletException, java.io.IOException
{
res.setContentType("text/html");
PrintWriter out = res.getWriter();
int n=0;
int l=0;
String titolo=req.getParameter("titolo");
String dbUrl = "jdbc:odbc:upload";
String query="SELECT * FROM upload WHERE file ='"+titolo+"'";
int i=0;
String risultato=null;
String risultato1=null;
String risultato2=null;
String risultato3=null;
String risultato4=null;
String risultato5=null;
try{ SAXBuilder builder = new SAXBuilder();
Document doc = builder.build("C:\\jakarta-tomcat-3.3.2\\webapps\\prova2\\articoli\\relazioni.xml");
Element root = doc.getRootElement().getChild("relazione");
risultato = root.getChild("titolo").getText();
risultato2 = root.getChild("autore").getText();
risultato3 = root.getChild("data").getText();
risultato4 = root.getChild("testo").getText();
risultato5 = root.getChild("revisore").getText();
if(risultato.equals(titolo)) {
i++;
out.println("<html>");
out.println("<body>");
out.println("<center><H1>La tua ricerca ha portato a "+i+" risultati:</H1>");
out.println("[*]"+risultato+"");
out.println("
"+risultato2+"</p>");
out.println("
"+risultato3+"</p>");
out.println("
"+risultato4+"</p>");
out.println("
"+risultato5+"</p>");
out.println("</body>");
out.println("</html>");
}
}catch (Exception e){
out.println("Errore7!!!!!!!");
out.println(e.toString());}
}}
il problema è che la servlet legge SOLAMENTE il primo livello del file xml...
Cioè se srcivo nel form "xfsfsfsfs"..
codice:
...<relazione>
<autore>dave83</autore>
<titolo>xfsfsfsfs</titolo>....
dovrebbe stamparmi tutti i dati ma...non è così!!!!!Legge solo il primo tag <relazione>!!!!!
Qualcuno sa aiutarmi????
Grazie a tutti!!!!!!!!!!!!!!!!!!!!!!!!