XML中的非法字符

时间:2012-09-05 08:43:35

标签: c# xml

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

来自损坏的文档的示例

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

使用ASCIIEncoding.UTF8序列化文档

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

如果您希望使用CDATA

,您甚至可以使用这个“有罪”字符

look here

答案 2 :(得分:-1)

您应该使用JTMon建议的最佳做法。

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

你也可以尝试这个

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

希望它会有所帮助。

答案 3 :(得分:-1)

您应该使用以下内容替换以下非法字符:

  

&lt;(&lt;)

     

&amp;(&amp;)

     

&gt;(&gt;)

     

&quot;(&#34;)

     

&apos;(&#39;)