HTML 在 .NET 中呈现不正确
-
22-07-2019 - |
题
我正在尝试获取字符串“<BR>
" 在 VB.NET 中,并通过 XSLT 将其转换为 HTML。然而,当 HTML 出来时,它看起来像这样:
<BR>
我只能假设它会继续并尝试渲染它。有什么办法可以转换这些 </>
回到括号中,这样我就可以得到我想要的换行符了?
解决方案
检查 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"><br></xsl:text>
包木窗它
不知道XSLT,但..
一个解决方法可能会使用 HttpUtility.HtmlDecode 从的System.Web命名。
using System;
using System.Web;
class Program
{
static void Main()
{
Console.WriteLine(HttpUtility.HtmlDecode("<br>"));
Console.ReadKey();
}
}
...
明白了!所选答案的上方,我也做了一些类似的对我的字符串:
htmlString = htmlString.Replace("<","<")
htmlString = htmlString.Replace(">",">")
我认为,虽然,最终,我可能只是最终使用<pre>
标签保留一切。
在字符串 “<br>
” 已经是HTML,所以你可以只Response.Write("<br>")
。
但你meantion XSLT,所以我想有一些变换回事。在这种情况下,肯定是变换应该在正确的地方作为节点插入。一个更好的问题可能会得到一个更好的答案