【问题标题】:Pretty print XML data in JSPJSP 中漂亮的打印 XML 数据
【发布时间】:2011-08-19 17:02:39
【问题描述】:

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

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

但问题是当${stuff} 是一个未格式化的XML 时,它会在jsp 中显示为一个长XML 数据。我需要把它印在&lt;p&gt; 标签内。

【问题讨论】:

    标签: html xml jsp formatting pretty-print


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        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>
        

        【讨论】:

        • 您可能希望也可能不希望使用xsl:strip-space,但如果您愿意,请记住在需要时使用xsl:preserve-space,例如在混合内容中保留纯空格文本节点。
        • 这似乎对我有用,有几种选择——但我的
        • @aceofspades:奇怪……你有简单的样本吗?使用上述转换时,script 标签没有任何问题。会不会是命名空间问题?你能用简化的输入文件重现它吗?您尝试过哪些 XSLT 处理器?你确定这不是 XML 查看器的问题吗?
        • 我有不止一个顶级元素。我假设这就是原因。谢谢--
        猜你喜欢
        • 1970-01-01
        • 2021-06-22
        • 1970-01-01
        • 2023-03-07
        • 2012-03-25
        • 2014-11-09
        • 2011-05-06
        • 2020-04-28
        • 1970-01-01
        相关资源
        最近更新 更多