2011-05-05 96 views
0

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

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

但问题是,当${stuff}是一个未格式化XML,它会显示在JSP作为一个长期的XML数据。我需要漂亮的印在<p>的标签内。

回答

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> 
+0

您可能希望或不希望使用'xsl:strip-space',但如果您这样做,请记住在需要时使用'xsl:preserve-space'。在混合内容中保留只有空白的文本节点。 – mousio 2011-05-05 20:50:35

+0

这似乎对我来说有几种选择 - 但我的

1

如果你想要一个简单的解决方案,不使用XSL,同时设置响应的JSP看烦,只要做stuff.replaceAll("<", "& lt;").replaceAll(">","& gt; ");你不需要别的东西;这里不需要XSL转换。在必不可少的时候使用技术,除非我在这里错过了一些东西。

0

你可以漂亮地打印漂亮的JSLT http://prettydiff.com/?m=beautify它会完全符合你的需求。考虑下面的例子:

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

漂亮的差异是能够识别多维标签,只要嵌套标签引号。