.NET实现高效的XML
本文关键字:XML 高效 实现 NET | 更新日期: 2023-09-27 18:25:38
我正在将大型数据库导出为xml格式。需要将这些XML数据压缩为尽可能小的格式。我听过很多关于高效XML(EXI)的知识,想知道是否有一个.NET实现,以便可以从代码中调用它。。。
有人有这样的例子吗,因为在线资源似乎有点稀疏。。。
事实证明,微软创建了自己的二进制XML格式/编码,称为MC-NBFX(朗朗上口的eh)。这是.NET框架和WCF的一部分,从.NET 3.0开始。有关更多信息,请参阅:
- [MC-NBFX]:.NET二进制格式:XML数据结构
- WCF二进制XML和字典
- XmlDictionaryWriter类
- XmlDictionaryReader类
另一种选择是通过IKVM运行Java实现来生成.Net程序集。我能找到的开源Java实现有:
- OpenEXI
- EXI有效
这样的实现确实存在。创建高效XML交换格式(AgileDelta)前身的公司提供了一个高效XML库,其中包括.Net版本。尽管他们似乎没有公布价格。
EXI官方网站没有列出任何其他.Net实现。
Nagasena同时拥有.Net(用C#编写)和EXI规范的Java实现。
您想要尽可能小的格式是有原因的吗?XML并不是真正为压缩优化而设计的@Svick的答案是,如果你想要的是易于访问的档案,那么目前的事实就是这样。
你可以在这里找到很多你要问的问题:XML的最佳压缩算法?
如果您想要的是定期访问的存档数据,那么EXI非常棒。否则,如果您的目标是长期归档,只需使用zip实用程序即可。亲吻。
如果需要与XML标准粘合,二进制XML是可行的(并且有一些实现)。
JSON,即使不是XML,也会随着数字而丢失。Ex 32位无符号int最大值将由JSON中的10个字节重新表示。在几乎所有的二进制格式中,这将是4个字节。这将适用于日期/时间等。
任何具有标准元素/属性类型的像样的二进制XML都应该具有更好的大小和处理效率。如果它可以重用标签,比如压缩文件中的字典,就像你从表中导出一样,这也是一个很好的功能。