回答
看看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. 使用Rails和Apache压缩输出的最佳方法
- 4. qrcode的最佳压缩和解压算法
- 5. 处理UIImagePickerController压缩的最快方法
- 6. XML到XHTML - 最佳方法?
- 7. zlib压缩的最佳尺寸?
- 8. 最好的压缩算法
- 9. 缩放HTML元素的最佳方法
- 10. 最佳压缩霍夫曼树
- 11. DotNetZip不提取从WinZip最佳压缩
- 12. 根据性能压缩JSON字符串并压缩无线电的最佳方法
- 13. 在Macbook上压缩视频的最佳方式
- 14. 什么是压缩日期的最佳方式?
- 15. XML:再压缩我的XML
- 16. 生成XML的最佳方法?
- 17. xml数据存储的最佳方法
- 18. 解析XML的最佳方法
- 19. 在lmdb中压缩我的数据的最佳方法是什么?
- 20. Url查询字符串的最佳压缩算法
- 21. 什么是数据转储的最佳压缩算法
- 22. 增加数字的最佳压缩算法是什么?
- 23. Clojure - 将PDF/Doc文件解压缩为简单文本的最佳方法
- 24. 使用Ruby提取压缩文件中所有内容的最佳方法
- 25. 在zip压缩文件中正确命名文件的最佳方法
- 26. 禁用mod_deflate和mod_gzip禁用压缩HTML,CSS和JS的最佳方法
- 27. 在IDL中处理Unix压缩文件(.Z)的最佳方法是什么?
- 28. 多个XML到PDF:最佳方法
- 29. 用于动态压缩和二分搜索的最佳压缩库/格式?
- 30. MAD方法压缩功能
我会尝试Zlib。但是可能会有基于模式的XML到二进制转换器。 – 2010-01-06 11:50:34