C# 如何处理包含无效XML字符的字符串

C# 如何处理包含无效XML字符的字符串,c#,xml,C#,Xml,我们有一个应用程序,通过电子方式和用户输入收集数据。数据最终被转换成XML。当我们通过序列化对象或使用.Net转换将入站数据转换为XML时,入站数据中存在无效XML字符的问题。进程将抛出一个异常,如下所示 异常:System.Xml.XmlException:,十六进制值0x10,是无效字符。第5行,第74位 除了在输入时或创建XML时清除所有数据之外,我不知道还有什么其他方法可以解决这个问题。通过清理函数运行对象中的每个字符串输入或字符串属性的想法听起来并不吸引人。这就是解决问题的方法 寻找确

我们有一个应用程序,通过电子方式和用户输入收集数据。数据最终被转换成XML。当我们通过序列化对象或使用.Net转换将入站数据转换为XML时,入站数据中存在无效XML字符的问题。进程将抛出一个异常,如下所示

异常:System.Xml.XmlException:,十六进制值0x10,是无效字符。第5行,第74位

除了在输入时或创建XML时清除所有数据之外,我不知道还有什么其他方法可以解决这个问题。通过清理函数运行对象中的每个字符串输入或字符串属性的想法听起来并不吸引人。这就是解决问题的方法

寻找确认或替代方案

谢谢,
Kevin

这方面确实没有一个优雅的解决方案,但有一些白名单清理器的示例。

捕获xml解析器异常,并仅将其放入清理例程;你不需要把一切都打扫干净。还要记录哪些客户向您提供了不良数据,以便您可以与他们联系,并通过他们的输入解决问题。使用XML等格式的目的是有一个商定的标准;如果他们违反了这一标准,他们实际上是在违反自己的合同——因此,尽管拥有灵活的服务很好,但试着让他们承担责任来解析他们提供给您的数据。那么您的规范是否允许数据具有这些特征?当然,您没有更改允许的数据,因为您刚刚了解到不能在XML文档中插入任意字符。