java - 如何将从 JSP 请求的 XML 数据格式化为表

标签 java xml jsp

我有一个.jsp,它确定用户可以访问哪些特定内容。它创建一个 XML 文件,该文件由前面的 jsp 读入流中。如何使用读入 char 数组流的 XML 数据填充表?

最佳答案

有很多方法可以从 XML 文件中获取 HTML 表格。最简洁的方法之一是将 XML 解析为可重用的集合 javabeans您将其传递给 JSP,以便您可以使用 JSTL <c:forEach>在渲染 HTML 表时对其进行迭代。这样,每一层都有自己明确的职责。 Java SE 提供了 JAXB对此非常有帮助。

想象一下您的 XML 如下所示:

<data>
    <entry>
        <key>foo1</key>
        <value>bar1</value>
    </entry>
    <entry>
        <key>foo2</key>
        <value>bar2</value>
    </entry>
    <entry>
        <key>foo3</key>
        <value>bar3</value>
    </entry>
</data>

然后您可以按如下方式创建 JAXB javabean:

@XmlRootElement
public class Data {

    @XmlElement(name="entry")
    private List<Entry> entries;

    public List<Entry> getEntries() {
        return entries;
    }

    public static class Entry {

        @XmlElement
        private String key;

        @XmlElement
        private String value;

        public String getKey() {
            return key;
        }

        public String getValue() {
            return value;
        }

    }

}

然后你可以将其转换为List<Entry>如下:

List<Entry> entries = JAXBContext.newInstance(Data.class).createUnmarshaller().unmarshal(inputStream).getEntries();

然后你就可以让你的servlet (或者 JSP?:/)在将请求转发到 JSP 之前将其存储在请求范围中:

request.setAttribute("entries", entries);

最后,您可以在 JSP 中对其进行迭代并将其呈现为 HTML 表格:

<table>
    <c:forEach items="${entries}" var="entry">
        <tr>
            <td><c:out value="${entry.key}" /></td>
            <td><c:out value="${entry.value}" /></td>
        </tr>
    </c:forEach>
</table>

关于java - 如何将从 JSP 请求的 XML 数据格式化为表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7841002/

相关文章:

java - 使用 XStreamMarshaller Spring 生成 XML View

JavaFX:为什么我必须按几次按钮才能背景改变?

java - 有没有办法将常用的动态例程复制到 java 方法中?

xml - 遍历 XML 文件元素

java - 如何在特定字符串中查找字符串并插入

java - jsp utf编码

java - PGP 使用什么算法来使用密码加密私钥?

xml - 作为另一个节点的同级节点的节点内的节点的 xpath

UTF-8 编码不支持 JSP

string - JSP中如何比较字符串