JSP中的漂亮打印XML数据

时间:2011-05-05 20:32:15

标签: html xml jsp formatting pretty-print

如何在JSP中打印(即缩进)XML数据?我有以下代码:

<c:forEach items="${stuffs}" var="stuff">
    <pre>
        <c:out value="${stuff}" escapeXml="true"/><br/>
    </pre>
</c:forEach>

但问题是当${stuff}是未格式化的XML时,它将在jsp中显示为一个长XML数据。我需要将它打印在<p>标记内。

3 个答案:

答案 0 :(得分:1)

XSLT有一种通过xsl:output元素执行此操作的简单方法。如果您可以应用XSLT,我建议使用这样的样式表(基于身份转换):

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:strip-space elements="*" />
    <xsl:output method="xml" indent="yes" />
    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*" />
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

答案 1 :(得分:1)

如果你想要一个简单的解决方案,在设置JSP的响应时不要打扰xsl,只需做stuff.replaceAll("<", "& lt;").replaceAll(">","& gt; ");你不需要任何其他东西;这里不需要XSL转换。在必要时使用技术,除非我在这里遗漏了一些东西。

答案 2 :(得分:0)

您可以在http://prettydiff.com/?m=beautify处使用Pretty Diff打印JSLT,它将完全满足您的需求。请考虑以下示例:

<a>
    <c:out value="<strong>some content</strong>"/>
</a>

Pretty Diff能够识别多维标签,只要嵌套标签在引号中即可。