回答
看看XML Compression Tools你也可以使用SharpZipLib
它可能不是「最小尺寸可以」壓縮它,但你可以使用使用System.IO.Compression
對其進行壓縮。壓縮往往能夠爲文本提供非常好的壓縮。
using (var fileStream = File.OpenWrite(...))
using (var zipStream = new GZipStream(fileStream, CompressionMode.Compress))
{
zipStream.Write(...);
}
如果您有可用於XML文件的模式,你可以嘗試EXIficient。它是Efficient XML Interchange(EXI)格式的實現,它幾乎是最好的通用XML壓縮方法。如果你沒有一個模式,EXI仍然比普通的zip(即deflate算法)要好,但不是很多,特別是對於大文件。
EXIficient僅僅是Java,但你或許可以把它變成可以調用的應用程序。我不知道C#中EXI的任何開源實現。
如上所述,Efficient XML Interchange(EXI)可以非常一致地實現最佳的可用XML壓縮。即使沒有模式,EXI比拉鍊小2-5倍並不罕見。有了模式,你會做得更好。
如果你不反對商業實現,你可以用高效的XML的.NET版本,並使用標準的API .NET直接從C#代碼調用它。您可以從http://www.agiledelta.com/efx_download.html下載免費試用版本。
文件大小不是EXI(或任何二進制方案)的唯一優勢。處理時間和內存開銷在讀取/寫入時也大大降低。想象一下,通過簡單複製字節將浮點數複製到磁盤的程序。現在想象另一個程序將浮點數轉換爲格式化文本,並將它們粘貼到文本流中,然後通過昂貴的壓縮算法提供該流。由於這種荒謬的開銷,對於可以用二進制表示輕鬆處理的非常大的文件而言,XML基本上不可用。
二進制XML有望解決XML這一長期存在的弱點。在二進制/文本表示之間進行轉換(不知道XML模式)是非常容易的,這意味着您仍然可以在需要時輕鬆編輯這些文件。
如果您正在尋找儘可能小的尺寸,然後嘗試的Fast Infoset二進制XML編碼,然後通過壓縮BZIP2和LZMA。您可能會獲得比壓縮文本XML或使用EXI更好的結果。 FastInfoset.NET包括快速信息集標準的實現和幾種可供選擇的壓縮格式,但它是商業的。
- 1. 壓縮.msi文件的最佳方法?
- 2. Android設備的最佳壓縮方法
- 3. 壓縮/加密的最佳做法
- 4. 用PHP複製和壓縮的最佳方法是什麼?
- 5. 在PHP中壓縮字符串的最佳方法
- 6. 使用Rails和Apache壓縮輸出的最佳方法
- 7. 什麼是UPX的最佳壓縮方法
- 8. XML到XHTML - 最佳方法?
- 9. 解壓JavaScript文件的最佳方法
- 10. 處理UIImagePickerController壓縮的最快方法
- 11. 壓縮方法
- 12. C的最佳圖像壓縮#
- 13. zlib壓縮的最佳尺寸?
- 14. Java/XML:什麼是動態解碼/解壓縮數據流的最佳方式?
- 15. 最好的壓縮算法
- 16. 縮放HTML元素的最佳方法
- 17. 縮小Cassandra集羣的最佳方法
- 18. 最佳壓縮霍夫曼樹
- 19. DotNetZip不提取從WinZip最佳壓縮
- 20. 壓縮MP3聲音文件的最佳方式
- 21. 什麼是壓縮日期的最佳方式?
- 22. 在Macbook上壓縮視頻的最佳方式
- 23. 根據性能壓縮JSON字符串並壓縮無線電的最佳方法
- 24. xml數據存儲的最佳方法
- 25. 檢查XML元素的最佳方法
- 26. 解析XML的最佳方法
- 27. 生成XML的最佳方法?
- 28. XML:再壓縮我的XML
- 29. 在lmdb中壓縮我的數據的最佳方法是什麼?
- 30. 增加數字的最佳壓縮算法是什麼?
我會嘗試Zlib。但是可能會有基於模式的XML到二進制轉換器。 – 2010-01-06 11:50:34