12

我正在将大型数据库导出为 xml 格式。需要将此 XML 数据压缩为尽可能小的格式。我听说过很多关于 Efficient XML (EXI) 并且想知道是否有一个 .NET 实现,以便可以从代码中调用它......

有没有人有这方面的例子,因为在线资源似乎有点稀疏......

4

5 回答 5

4

原来微软创建了他们自己的二进制 XML 格式/编码,称为 MC-NBFX(吸引人的 eh)。从 .NET 3.0 开始,这是 .NET 框架和 WCF 的一部分。有关更多信息,请参阅:

另一种选择是通过IKVM运行 Java 实现以生成 .Net 程序集。我能找到的开源 Java 实现是:

于 2013-12-16T12:58:50.707 回答
3

这样的实现确实存在。创建 Efficient XML 交换格式 (AgileDelta) 的前身的公司提供了一个 Efficient XML 库,其中包括 .Net 版本。虽然他们似乎没有公布价格。

官方 EXI 站点没有列出任何其他 .Net 实现。

于 2012-02-24T17:28:11.963 回答
3

Nagasena拥有 EXI 规范的 .Net(用 C# 编写)和 Java 实现。

于 2014-03-20T20:08:14.487 回答
0

您是否有理由想要尽可能小的格式?XML 并不是真正为压缩优化而设计的。如果您想要的是易于访问的档案,@Svick 的答案是现在的事实。

您可以在这里找到很多您要问的内容: XML 的最佳压缩算法?

如果您想要的是定期访问的存档数据,EXI 就很棒。否则,如果您的目标是长期存档,只需使用 zip 实用程序。吻。

于 2013-12-20T13:29:45.230 回答
0

如果您需要遵守 XML 标准,那么二进制 XML 是可行的方法(并且有一些实现)。

JSON,即使不是 XML,也会随着数字而丢失。Ex 32 位无符号整数最大值将在 JSON 中由 10 个字节表示。在几乎所有二进制格式中,这将是 4 个字节。这将适用于日期/时间等。

任何具有标准元素/属性类型的像样的二进制 XML 都应该提供更好的大小和处理效率。如果它可以重用标签,比如压缩文件中的字典,就像你从表中导出一样,那也是一个不错的功能。

于 2013-12-23T12:40:37.223 回答