不同的计算机系统可能有着不同的CultureInfo,例如在中文环境下日期通常这样显示03/30/2016,而在有的操作系统下它可能是这样的30.3.2016。

  这样的话带来一个问题,例如在中文环境下序列化了一个日期类,那么到了非中文环境下是否还能反序列回来呢?

其实这是不用担心的,C#中XML序列化是与CultureInfo无关的。我提出这一观点有两点理由:

  1.https://social.msdn.microsoft.com/Forums/windowsdesktop/zh-CN/0df9998e-8bee-4eed-93dd-fe627509b215/xmlserializerthreadculture

  其中有人回答了 原文在这里

  http://weblogs.asp.net/psteele/xmlserializer-ignores-culture

  大意就是有个higher(可能是牛B的)的人回答了xmlserializer-ignores-culture

  2.自己测试,上测试程序。

  public class TestClass
{
public DateTime time;
}
class Program
{
static void Main(string[] args)
{
TestClass MyClass = new TestClass();
MyClass.time = new DateTime(, , );
//var currentCulture = CultureInfo.CurrentCulture;
var currentCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
XmlSerializer serializer = new XmlSerializer(typeof(TestClass)); serializer.Serialize(Console.Out, MyClass); Console.WriteLine(MyClass.time.ToShortDateString()); CultureInfo cul = CultureInfo.GetCultureInfo("de-de");
//MyClass.time = new DateTime(2005,1,12);
Thread.CurrentThread.CurrentCulture = cul;
serializer.Serialize(Console.Out, MyClass);
Console.WriteLine(MyClass.time.ToShortDateString());
Console.Read(); }
}

  测试在不同的culture中序列化时间,可以发现序列化的结果是一致的,ConsoleWrite的结果是不一致的。

  So,放心使用XML序列化。

题外话:有时候系统中的类无法序列化,不知伙伴们如何解决。我采用了如下的方法

http://blog.163.com/very_apple/blog/static/27759236201463035249202/

  采用反射获得。

  大家还有什么好方法 说出来分享一下啦~

关于XML序列化与CultureInfo的更多相关文章

  1. XML序列化反序列化—常用类

    public class XMLSerializer    {        #region (public) xml序列化        /// <summary>        /// ...

  2. [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类

    [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...

  3. .NET中XML序列化的总结

    [题外话] 以前虽然常用.NET中的序列化,但是常用的BinaryFormatter,也就是二进制文件的序列化,却鲜用XML的序列化.对于XML序列化,.NET中同样提供了一个非常方便的工具XmlSe ...

  4. XML序列化和反序列化

    上篇总结了下JSON的序列化和反序列化,博园中大牛给了很多牛叉的评论,学习了不少. 不过在上篇中忘了把json序列化和反序列化的另外一种方式写上去了,这里做个简单的补充: Json篇:http://w ...

  5. XML 序列化与反序列化

    XML序列化与反序列化 1.将一个类转化为XML文件 /// <summary> /// 对象序列化成XML文件 /// </summary> /// <param na ...

  6. XmlSerializer 对象的Xml序列化和反序列化

    http://www.cnblogs.com/yukaizhao/archive/2011/07/22/xml-serialization.html 这篇随笔对应的.Net命名空间是System.Xm ...

  7. C#的XML序列化及反序列化

    webservice在工作中用到的很多,基本都是以XML格式问通讯内容,其中最关键的就是XML串的序列化及反序列化. XML的运用中有两种信息传递,一种为XML的请求信息,另一种为返回信息,要运用XM ...

  8. .NET XML序列化与反序列化

    闲着没事,写了两个通用的XML序列化与反序列化的方法. 贴出来当作笔记吧! /// <summary> /// XML序列化 /// </summary> /// <ty ...

  9. Windows Phone 七、XML序列化

    DataContractSerializer对象 public class Person { public int Id { get; set; } public string Name { get; ...

随机推荐

  1. MRC下多个对象的内存管理

    //set方法传递进来对象的生命周期,要求是在当前对象销毁之前,它一直存在就好- (void)setCar:(Car *)car{ //1.判断set方法传递进来的值是否与成员变量中保存的是同一个对象 ...

  2. 深度解析mysql登录原理

    使用mysql数据库的第一步必然是建立连接登录,然后在上面执行SQL命令.无论是通过mysql的客户端,还是通过C-API,JDBC标准接口连接数据库,这个过程一定少不了.今天我们聊一聊mysql登陆 ...

  3. JavaWeb开发环境准备之Linux篇

    01 Linux环境准备 (本文在win10上使用 VMware12 + Ubuntu14.04)   1.JDK安装及相关配置 参考:http://blog.csdn.net/sxdtzhaoxin ...

  4. DbVisualizer连接hbase

    1.添加phoneix驱动 (1).点击Tools--->Driver Manager- (2).新建一个驱动,名称为phoenix(名称随意),选择phoenix的客户端驱动,驱动类如图所示 ...

  5. hive建表与数据的导入导出

    建表: create EXTERNAL table tabtext(IMSI string,MDN string,MEID string,NAI string,DestinationIP string ...

  6. ARM汇编与C混合编程

    GNU内联汇编 内联汇编即在C中直接使用汇编语句进行编程,使程序可以在C程序中实现C语言不能完成的一些工作,例如,在下面几种情况中必须使用内联汇编或嵌入型汇编 程序中使用饱和算术运算(Saturati ...

  7. addEventListener 的另类写法

    addEventListener 参数如下 addEventListener(type, listener[, useCapture]); type,事件名称 listener,事件处理器 useCa ...

  8. nginx转发会 默认忽略 headers 中name带”_”的

    昨天遇到一个很蛋疼的问题,在提供的一个 http api中,有定义了一个"X_AUTH_TOKEN"自定义head,可是请求这个api时带上"X_AUTH_TOKEN&q ...

  9. 某墙尼妹,用个Response.Filter来解决StackExchange.Exceptional中google cdn的问题

    某墙墙了古古路,一些开源的东东里用了古古路CDN,比如Exceptional,Opserver ,导致服务要么慢要么用不了 必须要替换之 Exceptional就只要用Response.Filter替 ...

  10. BestCoder Round #89 Fxx and string

    问题描述 青年理论计算机科学家Fxx得到了一个只包含小写字母的字符串. 字符串的长度为\:nn,下标从1开始,第\:i\:i位的字母为\:s_is​i​​,现在Fxx想知道有多少三元组\:(i,j,k ...