XSLT和特殊字符的问题

时间:2012-05-13 10:38:38

标签: c# asp.net xml xslt for-xml

我有一个非常复杂的问题,我需要一些帮助。 在我的Web应用程序(ASP.net 4,C#)上,我使用FOR XML PATH('')将数据从SQL Server转换为XML, 并使用以下行将其提供给XSLT:

MemoryStream stream = new MemoryStream(UTF8Encoding.UTF8.GetBytes(xml));
XPathDocument document = new XPathDocument(stream);
StringWriter writer = new StringWriter();
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load(xsltPath);
transform.Transform(document, null, writer);
return writer.ToString();

现在,当我从论坛提供消息时,在阳光灿烂的日子里,应该没有任何问题,也没有。 当用户决定使用像< >在他们的信息中,我们有下雨天。 我得到一个错误,顺便说一下(从消息到消息取决于他们在那里写的内容)。 我已经尝试过disable-output-escaping =“yes” 不用说,我希望用户能够使用像

这样的标签
<a href... or <font ...>

以下是导致此问题的其中一条消息的示例:

setting-->about phone----< software update

有没有人遇到同样的问题?任何可能的解决方案?

1 个答案:

答案 0 :(得分:0)

您需要编码这样的特殊字符。就XML而言,其中有5个:

  • > - &gt;
  • < - &lt;
  • & - &amp;
  • " - &quot;
  • ' - &apos;

您需要从使用输入中对这些进行编码。

另一种方法是将所有用户生成的内容放在<!\[CDATA\[\]\]>个部分中,这样可以有效地实现相同目标。