3

我有一个用 C# 编写的 .NET 应用程序,它以 XML 格式保存信息。应用程序将应用程序数据序列化为 xml。该应用程序包含一个文本框,用户可以在其中自由输入任何文本。我有一些用户设法输入字符的情况,主要是当他们将文本从其他应用程序复制并粘贴到文本框中时,xml 文档会损坏。是否有一种通用方法来管理 xml 文档中的非法字符,而不必在输入的每个文本框中将它们过滤掉。

来自损坏的文档的样本

<Propery>
  <Name>&#x8;Alimentação Controlador</Name>
  <Value>24</Value>
  <Unit>Vca</Unit>
</Propery>

文档使用 ASCIIEncoding.UTF8 进行序列化

4

4 回答 4

3

我认为你最好的选择是“SafeEncode”用户输入的字符串。此链接http://msdn.microsoft.com/en-us/library/system.security.securityelement.escape(VS.80).aspx向您展示了如何通过一次调用 SecurityElement.Escape(string s ) 方法。

于 2012-09-05T09:02:30.130 回答
1

您应该将以下非法字符替换为:

&lt;(<)

&amp;(&)

&gt;(>)

&quot;(")

&apos;(')

于 2015-07-10T08:27:26.493 回答
0

如果您希望使用 CDATA,您甚至可以使用这个“有罪的”字符

看这里

于 2012-09-05T09:07:11.920 回答
-1

您应该使用 JTMon 建议的最佳实践。

我在导出到 XML 时也遇到了同样的情况。我不知道它是否适合您,但尝试使用它stringbuilderstring生成 xml。

你也可以试试这个

i.SubItems[0].Text.Trim('\0')

希望它会有所帮助。

于 2012-09-05T09:12:58.820 回答