如何处理特殊字符,如 什么时候序列化/反序列化xml对象?
我有一些商业对象来存储客户名称,有时名称包含一些特殊字符,如
, 
。 这些名称是从第三方导入的,我无法从源中删除有趣的字符。
应用程序将通过XmlSerializer序列化/反序列化客户对象,但奇怪的是,当我使用特殊字符序列化名称时,没有错误,结果将像这样Jim 
。 但是当我反序列化输出xml时,我将得到一个exceptionThere is an error in XML document (3, 15)
。
那么如何在我的应用程序中处理这些特殊字符? 谢谢!
附上一些测试代码:
public class Customer { public string Name; } class Program { public static T DeserializeFromXml(string settings) where T : class { var serializer = new XmlSerializer(typeof(T)); var reader = new StringReader(settings); var result = serializer.Deserialize(reader); return result as T; } public static string SerializeToXml(T settings) { var serializer = new XmlSerializer(typeof(T)); var writer = new StringWriter(); serializer.Serialize(writer, settings); return writer.ToString(); } static void Main(string[] args) { var str = new char[] { 'J', 'i', 'm', (char)2 }; var customer = new Customer { Name = new string(str) }; var output = SerializeToXml(customer); var obj = DeserializeFromXml(output); } }
我的问题没有解决方案,但这里是背景信息。
字符串 是用于表示值为’2’的字符的XML。 根据XML 1.0,这不是一个有效的字符。 见https://www.w3.org/TR/2004/REC-xml-20040204/#NT-Char 。
.Net CLR是一致的。 Xml序列化程序将很乐意生成具有非法字符的XML文档。 但是,当遇到非法字符时,反序列化器将抛出。
有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/aa302290.aspx 。
XML 1.1放宽了限制。 但.Net仅支持XML 1.0。
上述就是C#学习教程:如何处理特殊字符,如 什么时候序列化/反序列化xml对象?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1005870.html