如何在JSP中打印(即缩进)XML数据?我有以下代码:
<c:forEach items="${stuffs}" var="stuff">
<pre>
<c:out value="${stuff}" escapeXml="true"/><br/>
</pre>
</c:forEach>
但问题是当${stuff}
是未格式化的XML时,它将在jsp中显示为一个长XML数据。我需要将它打印在<p>
标记内。
答案 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能够识别多维标签,只要嵌套标签在引号中即可。