2011-05-05 144 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> 

漂亮的差異是能夠識別多維標籤,只要嵌套標籤引號。