2013-10-07 194 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