2

我必须在 jsp 中解析 xml 代码(使用 JSTL)。我只想检索<title>xml 的元素内容。

我使用 XPath 查询检索 xml 代码(来自 eXist-db),然后将其作为字符串(在 a 中List<String>)传递给我的控制器,最后将其添加到 jsp requestScope。

但是,当我在我的 jsp 中使用 JSTL 时,我无法解析我的 requestScope 中的 xml。

XML代码:

<poll xmlns="com.dot.bla.com/poll" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://com.dot.bla.com/poll poll.xsd">
    <pollHead>
        <code>1</code>
        <title>This is the title</title>
    </pollHead>
    <pollBody>
    </pollBody>
</poll>

这是控制器(在 Spring 框架内):

@RequestMapping("/")
public String getAllPolls(Model model) throws RepositoryError {
    List<String> polls = service.getAllPollsSkeletons();
    model.addAttribute("polls",polls);
    return "common.index";
}

jsp

<c:forEach items="${polls}" var="poll">
  <x:parse doc="${poll}" var="output"/>
  <b>Title:</b>
  <x:out select="$output/pollHead/title"/><br/>
</c:forEach>

这不起作用,它在我的 html 源输出中没有给我任何东西。但如果我只是写

<x:out select="$output"/>

它会给我所有的 xml 代码内容,没有任何 xml 标签格式。我究竟做错了什么?我能做些什么?

4

2 回答 2

0

如果您的 xml 在一个节点内只有一个子节点,您可以跳过节点标题而仅使用 xPath

<c:forEach items="${polls}" var="poll">
<x:parse doc="${poll}" var="output"/>
  <b>Title:</b>
  <x:out select="$output///title"/><br/>
</c:forEach>
于 2018-09-06T10:14:57.497 回答
0

这应该有效。

<c:forEach items="${polls}" var="poll">
  <x:parse doc="${poll}" var="output"/>
  <b>Title:</b>
  <x:out select="$output/poll/pollHead/title"/><br/>
</c:forEach>
于 2018-09-04T09:17:47.547 回答