我试图在我从servlet传递的JSP中使用xml字符串。变量很好。我使用代码:
request.setAttribute("xml",xmlDoc_str2);
request.getRequestDispatcher("./jsp/pdirdetail.jsp").forward(request, response);
但是,我不确定如何在jsp端使用它。我需要解析它并在JSP中读取它。我使用的代码是:
<%=request.getAttribute("xml") %>
<%
try{
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(${xml}));
}
catch(Exception e){}
%>
显然,我并不喜欢我引用该变量的方式。我不确定是否有另一种方法可以做到这一点,或者我是否遗漏了某些东西。
答案 0 :(得分:1)
您应该尝试使用 XML Tag Library ,这样可以轻松指定和选择XML文档的各个部分。
问题在于线下。你不能在Scriptlet中混合使用JSTL。
new StringReader(${xml})
始终try to avoid Scriptlet使用JSP Standard Tag Library或JSP表达式语言。
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>
的Servlet
// assign the XML in xmlDoc_str2 and set it as request attribute
request.setAttribute("xml",xmlDoc_str2);
request.getRequestDispatcher("./jsp/pdirdetail.jsp").forward(request, response);
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:parse Tags</title>
</head>
<body>
<h3>Books Info:</h3>
<x:parse xml="${xml}" 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>
输出:
Books Info:
The title of the first book is:Padam History
The price of the second book: 2000