XML中有非法字符

3
我有一个用C#编写的.NET应用程序,它以XML格式保存信息。该应用程序将应用程序数据序列化为xml。该应用程序包含一个文本框,用户可以自由输入任何文本。我遇到了一些情况,用户设法输入字符,尤其是当他们从其他应用程序中复制和粘贴文本到文本框时,XML文档就会损坏。是否有一般方法管理XML文档中的非法字符,而无需在每个文本框中输入时过滤它们。
文档示例:
<Propery>
  <Name>&#x8;Alimentação Controlador</Name>
  <Value>24</Value>
  <Unit>Vca</Unit>
</Propery>

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

XML文档声明使用哪种编码?您如何生成XML(使用XML库还是直接生成)? - Aasmund Eldhuset
在你的情况下,“&”是问题所在。 - Florim Maxhuni
文档声明 <?xml version="1.0" encoding="utf-8"?>。 - klashagelqvist
@FlorimMaxhuni 不,问题在于BS(回退,代码0x08)字符,在XML 1.0中无效。 - David Balažic
4个回答

3

这并没有帮助,因为问题在于  字符,该字符将不受 SecurityElement.Escape 方法的影响。 - David Balažic

1

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

&lt; (<)

&amp; (&)

&gt; (>)

&quot; (")

&apos; (')


0

如果您愿意使用CDATA,您甚至可以使用这些“罪名”的字符

看这里


-1

你应该按照JTMon的建议使用最佳实践。

当我导出到XML时,我也遇到了同样的情况。我不知道这对你是否有用,但是尝试使用stringbuilder而不是string来生成xml。

你也可以尝试这个方法。

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

希望这能有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接