JSP: datos XML

Cuando envía los datos XML a través de HTTP, tiene sentido usar JSP para manejar documentos XML entrantes y salientes; por ejemplo, documentos RSS. Como un documento XML es simplemente un montón de texto, crear uno a través de una JSP es mucho más fácil que crear un documento HTML.

Envío de XML desde una JSP

Puede enviar el contenido XML utilizando JSP de la misma forma que envía HTML. La única diferencia es que debe establecer el tipo de contenido de su página en texto / xml. Para configurar el tipo de contenido, use el<%@page%> etiqueta, como esta -

<%@ page contentType = "text/xml" %>

El siguiente ejemplo mostrará cómo enviar contenido XML al navegador:

<%@ page contentType = "text/xml" %>

<books>
   <book>
      <name>Padam History</name>
      <author>ZARA</author>
      <price>100</price>
   </book>
</books>

Acceda al XML anterior utilizando diferentes navegadores para ver la presentación del árbol del documento del XML anterior.

Procesamiento de XML en JSP

Antes de continuar con el procesamiento de XML utilizando JSP, deberá copiar las siguientes dos bibliotecas relacionadas con XML y XPath en su <Tomcat Installation Directory>\lib -

Pongamos el siguiente contenido en el archivo books.xml:

<books>
   <book>
      <name>Padam History</name>
      <author>ZARA</author>
      <price>100</price>
   </book>
   
   <book>
      <name>Great Mistry</name>
      <author>NUHA</author>
      <price>2000</price>
   </book>
</books>

Prueba lo siguiente main.jsp, manteniéndose en el mismo directorio -

<%@ taglib prefix = "c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "x" uri="http://java.sun.com/jsp/jstl/xml" %>
 
<html>
   <head>
      <title>JSTL x:parse Tags</title>
   </head>

   <body>
      <h3>Books Info:</h3>
      <c:import var = "bookInfo" url="http://localhost:8080/books.xml"/>
 
      <x:parse xml = "${bookInfo}" var = "output"/>
      <b>The title of the first book is</b>: 
      <x:out select = "$output/books/book[1]/name" />
      <br>
      
      <b>The price of the second book</b>: 
      <x:out select = "$output/books/book[2]/price" />
   </body>
</html>

Acceda a la JSP anterior usando http://localhost:8080/main.jsp, se mostrará el siguiente resultado:

Books Info:

The title of the first book is:Padam History The price of the second book: 2000

Formateo de XML con JSP

Considere la siguiente hoja de estilo XSLT style.xsl -

<?xml version = "1.0"?>
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" 
   version = "1.0">
 
   <xsl:output method = "html" indent = "yes"/>
   <xsl:template match = "/">
      <html>
         <body>
            <xsl:apply-templates/>
         </body>
      </html>
   </xsl:template>
    
   <xsl:template match = "books">
      <table border = "1" width = "100%">
         <xsl:for-each select = "book">
            <tr>
               <td>
                  <i><xsl:value-of select = "name"/></i>
               </td>
               
               <td>
                  <xsl:value-of select = "author"/>
               </td>
               
               <td>
                  <xsl:value-of select = "price"/>
               </td>
            </tr>
         </xsl:for-each>
      </table>
   
   </xsl:template>
</xsl:stylesheet>

Ahora considere el siguiente archivo JSP:

<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "x" uri = "http://java.sun.com/jsp/jstl/xml" %>
 
<html>
   <head>
      <title>JSTL x:transform Tags</title>
   </head>
   
   <body>
      <h3>Books Info:</h3>
      <c:set var = "xmltext">
         <books>
            <book>
               <name>Padam History</name>
               <author>ZARA</author>
               <price>100</price>
            </book>
            
            <book>
               <name>Great Mistry</name>
               <author>NUHA</author>
               <price>2000</price>
            </book>
         </books>
      </c:set>
 
      <c:import url = "http://localhost:8080/style.xsl" var = "xslt"/>
      <x:transform xml = "${xmltext}" xslt = "${xslt}"/>
   </body>
</html>

Se mostrará el siguiente resultado:

Books Info:

Padam History ZARA 100
Great Mistry NUHA 2000

Para obtener más información sobre el procesamiento XML con JSTL, puede consultar JSP Standard Tag Library .