Ayuda!!! Xml, Xsl y JSP
Buen dÃa....
Mi duda es la siguiente... tengo un documento xml bien armado que traigo de la base de datos y lo contengo en un variable string, tengo además un documento xsl, que interpreatará al xml, ahora como hago para instanciar el archivo xsl, y hacer el parse para que se me dibuje en un página jsp.
si alguno de ustedes sabe, le agradecerÃa mucho la ayuda
Mi duda es la siguiente... tengo un documento xml bien armado que traigo de la base de datos y lo contengo en un variable string, tengo además un documento xsl, que interpreatará al xml, ahora como hago para instanciar el archivo xsl, y hacer el parse para que se me dibuje en un página jsp.
si alguno de ustedes sabe, le agradecerÃa mucho la ayuda
Suponiendo que xmlSource es tu documento xml y xsltResoucerName es el nombre del archivo xsl (y que el archivo esta en el classpath) probá:
public static String transform(String xmlSource, String xsltResourceName) throws SqlGeneratorException {
StringWriter result = new StringWriter();
try {
InputStream stylesheet = SqlGenerator.class.getResourceAsStream(xsltResourceName);
StreamSource stylesource = new StreamSource(stylesheet);
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xmlSource)));
Transformer transformer = TransformerFactory.newInstance().newTransformer(stylesource);
StreamResult out = new StreamResult(result);
transformer.transform(new DOMSource(document), out);
stylesheet.close();
} catch (IOException e) {
.....
}
return result.toString();
}
public static String transform(String xmlSource, String xsltResourceName) throws SqlGeneratorException {
StringWriter result = new StringWriter();
try {
InputStream stylesheet = SqlGenerator.class.getResourceAsStream(xsltResourceName);
StreamSource stylesource = new StreamSource(stylesheet);
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xmlSource)));
Transformer transformer = TransformerFactory.newInstance().newTransformer(stylesource);
StreamResult out = new StreamResult(result);
transformer.transform(new DOMSource(document), out);
stylesheet.close();
} catch (IOException e) {
.....
}
return result.toString();
}
Mil Gracias maramonar... pero no me ha funcionado todavÃa. Implemente el método en el bean. pero me da problemas al cargar el xsl, a pesar que lo tengo dentro del classpath.
Ahh y otra pregunta, y perdona mi ignoracia, la clase SQLGenerator en cual paquete está declarada.
Otra coas, también probé directamente en un scriplet en el jsp, y tampoco me importa el archivo, me da la siguiente excepción
javax.xml.transform.TransformerException: java.io.FileNotFoundException:
NotifyUtil::java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:183)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:222)
at java.io.BufferedInputStream.read(BufferedInputStream.java:277)
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:756)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:711)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:721)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:635)
at org.netbeans.modules.web.monitor.server.NotifyUtil$RecordSender.run(NotifyUtil.java:248)
Ahh y otra pregunta, y perdona mi ignoracia, la clase SQLGenerator en cual paquete está declarada.
Otra coas, también probé directamente en un scriplet en el jsp, y tampoco me importa el archivo, me da la siguiente excepción
javax.xml.transform.TransformerException: java.io.FileNotFoundException:
NotifyUtil::java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:183)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:222)
at java.io.BufferedInputStream.read(BufferedInputStream.java:277)
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:756)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:711)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:721)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:635)
at org.netbeans.modules.web.monitor.server.NotifyUtil$RecordSender.run(NotifyUtil.java:248)
