JSP - Dữ liệu XML

Khi bạn gửi dữ liệu XML qua HTTP, bạn nên sử dụng JSP để xử lý các tài liệu XML đến và đi; ví dụ, tài liệu RSS. Vì một tài liệu XML chỉ đơn thuần là một loạt văn bản, nên việc tạo một tài liệu thông qua JSP dễ dàng hơn nhiều so với việc tạo một tài liệu HTML.

Gửi XML từ JSP

Bạn có thể gửi nội dung XML bằng cách sử dụng JSP giống như cách bạn gửi HTML. Sự khác biệt duy nhất là bạn phải đặt loại nội dung trên trang của mình thành text / xml. Để đặt loại nội dung, hãy sử dụng<%@page%> thẻ, như thế này -

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

Ví dụ sau sẽ cho thấy cách gửi nội dung XML đến trình duyệt:

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

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

Truy cập XML ở trên bằng các trình duyệt khác nhau để xem bản trình bày cây tài liệu của XML ở trên.

Xử lý XML trong JSP

Trước khi tiến hành xử lý XML bằng JSP, bạn sẽ cần sao chép hai thư viện liên quan đến XML và XPath sau vào <Tomcat Installation Directory>\lib -

  • XercesImpl.jar - Tải xuống từ https://www.apache.org/dist/xerces/j/

  • xalan.jar - Tải xuống từ https://xml.apache.org/xalan-j/index.html

Hãy để chúng tôi đưa nội dung sau vào tệp 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>

Hãy thử những điều sau main.jsp, giữ trong cùng một thư mục -

<%@ 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>

Truy cập JSP ở trên bằng cách sử dụng http://localhost:8080/main.jsp, kết quả sau sẽ được hiển thị:

Books Info:

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

Định dạng XML với JSP

Hãy xem xét biểu định kiểu XSLT sau 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>

Bây giờ hãy xem xét tệp JSP sau:

<%@ 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>

Kết quả sau sẽ được hiển thị:

Books Info:

Padam History ZARA 100
Great Mistry NUHA 2000

Để biết thêm về xử lý XML bằng JSTL, bạn có thể kiểm tra Thư viện thẻ chuẩn JSP .