我正在创建一个mvc应用程序,在控制器(servlet)中,我正在填充一个请求变量,然后尝试通过foreach jstl标签读取并在view(jsp)中显示它。问题是我不知道如何从会话中读取xml,然后解析它并在jsp页面中显示属性和元素。以下是我的代码。
在servlet中,设置请求属性:
request.setAttribute("XMLDocument", xmlResultStr);
这是一个可以存储在xmlResultStr中的示例xml。
<?xml version="1.0" encoding="UTF-8"?>
<SearchResults>
<result url="http://haacked.com/" totalcount="14">
<keyword count="9">start</keyword>
<keyword count="5">end</keyword>
</result>
<result url="http://feeds.haacked.com/haacked" totalcount="14">
<keyword count="9">start</keyword>
<keyword count="5">end</keyword>
</result>
</SearchResults>
在jsp页面中,我正在使用此代码,但完全没有运气,我正在寻找许多小时并完全坚持这一点:
<x:parse xml="${XMLDocument}" var="xml"/>
<c:out value="${xml}" />
<x:forEach select="$xml/SearchResults/result" var="item">
<c:set var="elementName" value="url"/>
<x:out select="$item/*[name()=$elementName]" />
<h3><a href="<x:out select="$item/*[name()=$elementName]" />" target="_blank"><x:out select="$item/*[name()=$elementName]" /></a></h3>
<p>
<%-- somehow display keywords list here, like shown below --%>
</p>
<hr />
</x:forEach>
我想要的是:
<h3><a href="http://haacked.com/" target="_blank">http://haacked.com/</a></h3>
<p>
(start - 9, end - 5)
</p>
<hr />
答案 0 :(得分:2)
我的建议:避免在会话中存储XML字符串并尝试在JSP中解析它。
采用MVC原则:在将文档存储在会话中之前,使用Java代码解析文档。将文档转换为Java bean并将此Java bean存储在会话中,而不是存储XML字符串。
然后使用JSP中的JSTL核心taglib和JSP EL来显示存储在此Java Bean中的信息。