0

在我的网络应用程序(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

任何可能的解决方案?

4

1 回答 1

0

您需要对此类特殊字符进行编码。就 XML 而言,有 5 个:

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

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

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

于 2012-05-13T10:44:08.400 回答