我正在尝试获取字符串“<BR>" 在 VB.NET 中,并通过 XSLT 将其转换为 HTML。然而,当 HTML 出来时,它看起来像这样:

&lt;BR&gt;

我只能假设它会继续并尝试渲染它。有什么办法可以转换这些 &lt;/&gt; 回到括号中,这样我就可以得到我想要的换行符了?

有帮助吗?

解决方案

检查 XSLT 是否具有:

<xsl:output method="html"/>

编辑:评论中的解释

默认情况下,XSLT 输出为 XML(1),这意味着它将转义任何重要字符。您可以在特定实例中使用属性覆盖它 disable-output-escaping="yes" (介绍 这里)但更强大的是将输出更改为 HTML 的显式值,这在全局范围内具有相同的好处,如下所示:

  • 对于脚本和样式元素,替换任何转义字符(例如 as & 和 >) 及其实际值 (& 和 >)。
  • 对于属性,将所有出现的 > 替换为 >。
  • 写入空元素,例如 <br>, <img>, , 和 <input> 没有 结束标记或斜杠。
  • 将按其存在来传达信息的属性编写为 与它们的价值相反,例如 选中并选中,最小化 形式。

来自可靠的 IBM 文章 涵盖该主题,stylusstudio 的最新报道 这里

如果 HTML 输出是您想要的,那么您应该指定 HTML 输出。

(1) 实际上存在输出默认为 HTML 的极端情况,但我认为它不是通用的,而且依赖它有点迟钝。

其他提示

尝试与<xsl:text disable-output-escaping="yes">&lt;br&gt;</xsl:text>包木窗它

不知道XSLT,但..

一个解决方法可能会使用 HttpUtility.HtmlDecode 从的System.Web命名。

using System;
using System.Web;

class Program
{
    static void Main()
    {
        Console.WriteLine(HttpUtility.HtmlDecode("&lt;br&gt;"));
        Console.ReadKey();
    }
}

...

明白了!所选答案的上方,我也做了一些类似的对我的字符串:

htmlString = htmlString.Replace("&lt;","<")
htmlString = htmlString.Replace("&gt;",">")

我认为,虽然,最终,我可能只是最终使用<pre>标签保留一切。

在字符串 “<br>” 已经是HTML,所以你可以只Response.Write("<br>")

但你meantion XSLT,所以我想有一些变换回事。在这种情况下,肯定是变换应该在正确的地方作为节点插入。一个更好的问题可能会得到一个更好的答案

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top