我有一个用C#编写的.NET应用程序,它以XML格式保存信息。应用程序将应用程序数据序列化为xml。该应用程序包含一个文本框,用户可以在其中输入任何文本。我有用户设法输入字符的情况,主要是当他们将文本从其他应用程序复制并粘贴到文本框中时,xml文档已损坏。是否有一般方法来管理xml文档中的非法字符,而无需在输入时的每个文本框中过滤掉它们。
来自损坏的文档的示例
<Propery>
<Name>Alimentação Controlador</Name>
<Value>24</Value>
<Unit>Vca</Unit>
</Propery>
使用ASCIIEncoding.UTF8序列化文档
答案 0 :(得分:3)
我认为您最好的选择是“SafeEncode”用户输入的字符串。此链接http://msdn.microsoft.com/en-us/library/system.security.securityelement.escape(VS.80).aspx向您展示如何通过调用SecurityElement.Escape(string s)方法轻松完成此操作。
答案 1 :(得分:0)
如果您希望使用CDATA
,您甚至可以使用这个“有罪”字符答案 2 :(得分:-1)
您应该使用JTMon建议的最佳做法。
导出到XML时,我也遇到了同样的情况。我不知道它是否适合您,但尝试使用stringbuilder
代替string
生成xml。
你也可以尝试这个
i.SubItems[0].Text.Trim('\0')
希望它会有所帮助。
答案 3 :(得分:-1)
您应该使用以下内容替换以下非法字符:
<
(&lt;)
&
(&amp;)
>
(&gt;)
"
(&#34;)
'
(&#39;)