2013-10-07 199 views
0

我的程序生成一起举行一个类中的一些数字结果:序列化对象

[Serializable] 
public class Examination 
{ 

    public string _examiner { get; set; } 
    public string _interpretation { get; set; } 
    DateTime _examination_date { get; set; } 

    // two following properties about 100x100 in size 
    public Point3D[,] _surface_coordinates { get; set; } 
    public double [,] _mapa_curvatura { get; set; } 

    public Point3DCollection _symmetry_line { get; set; } 
} 

现在我要坚持这个使用序列化(无需原则ORM /数据库)和我有一些疑惑:

  1. 我需要序列化的数据是在其他语言编写的脚本(Python的大部分),所以我不会用二进制序列化,使用XmlSerialization代替访问;
  2. 不支持多维数据,所以我不得不将[,]数组转换为[][]数组,这对我来说看起来有点“肮脏”(不过没有什么大不了的,但如果这是唯一的话)。
  3. 由此产生的XML有点太大(每个文件2Mb),而我在Python中使用quick'n'dirty二进制格式获得的结果要小得多(例如,将双精度数组保存为长字符串,和列中的文件名,然后解析它,并在反序列化期间重塑:不太漂亮!)。

因为我是序列化领域的完整初学者,所以我想问一下:“将这个类序列化并反序列化到磁盘,这将成为一种可行的策略/策略?主要要求是:

  • 可以用其他语言阅读;
  • 紧凑的文件大小;
  • 尊重C#/ .net良好习惯和常用习语;

感谢您的阅读!

+1

不比XML详细,仍然可读的是JSON。 – BartoszKP

+1

为什么2MB太大?尺寸要求是什么,它们来自哪里? –

+0

@PrestonGuillot太大了,因为最终会有很多2mb文件,而且我知道数字结构比它的(相当冗长/膨胀/缩小)XML表示要小得多。正如其他人所建议的那样,GZip可能是一个可以接受的解决方案,您怎么看? – heltonbiker

回答

2

读其他语言

这是XML被设计的原因之一,我个人会坚持下去。

紧凑的文件大小

你有没有考虑把它作为一个压缩文件?例如MyXml.zip。

尊重C#/。NET好做法和常见的成语

只要坚持到docs,你应该罚款。

+0

我曾考虑使用'GZipStream'来压缩XML,但是想知道这是否会被认为是C#中的惯用/好习惯...... – heltonbiker

+1

@heltonbiker为什么你认为它不会是?出于这个原因,您可能会发现大多数使用开放XML格式的系统实际上都使用归档。例如,使用任何使用XML的办公文件'.xlsx'将其重命名为'.zip'并将其打开。 – James

+0

我目前使用'GZipStream'将它保存为“myFile.xml.gz”。使用双扩展名以便gz文件中的xml文件具有适当的扩展名。谢谢! – heltonbiker