JSP XML data processing
When sending XML data over HTTP, it is necessary to use JSP to process incoming and outgoing XML documents, such as RSS documents. As an XML document, it is just a bunch of text. Creating an XML document using JSP is no more difficult than creating an HTML document.
Sending XML using JSP
Sending XML content using JSP is the same as sending HTML content. The only difference is that you need to set the page's context attribute to text/xml. To set the context attribute, use the <%@page % > command, like this:
<%@ page contentType="text/xml" %>
The next example sends XML content to the browser:
<%@ page contentType="text/xml" %> <books> <book> <name>Padam History</name> <author>ZARA</author> <price>100</price> </book> </books>
Use different browsers Come visit this example and see the document tree presented by this example.
Processing XML in JSP
Before using JSP to process XML, you need to place the two library files related to XML and XPath in the <Tomcat Installation Directory>\lib directory:
XercesImpl.jar: Download here http://www.apache.org/dist/xerces/j/
xalan.jar: Download http://xml.apache.org/xalan-j/
books.xml file:
<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>
main.jsp file:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ 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>
Access http://localhost:8080/main.jsp, the running results are as follows:
BOOKS INFO: The title of the first book is:Padam History The price of the second book: 2000
Using JSP to format XML
This is the XSLT style sheet style.xsl file:
<?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>
This is the main.jsp file:
<%@ 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>
The running results are as follows:
For more information about using JSTL to process XML, please refer to the JSP Standard Tag Library.