Aet*_*hex 31 xml compression algorithm zip text
我几乎不知道有关压缩的事情,所以忍受我(这可能是一个愚蠢而痛苦的明显问题).
所以假设我有一个带有几个标签的XML文件.
<verylongtagnumberone>
<verylongtagnumbertwo>
text
</verylongtagnumbertwo>
</verylongtagnumberone>
Run Code Online (Sandbox Code Playgroud)
现在假设我的多个XML文件中有许多这些非常长的标签,其中包含许多属性.我需要将它们压缩到尽可能小的尺寸.最好的方法是使用特定于XML的算法,该算法为vlt1或vlt2分配单个标签假名.然而,这并不像我想要的那样"开放",我想使用像DEFLATE或LZ这样的常用算法.如果存档是.zip文件,它也会有效.
由于我正在处理纯文本(没有像图像这样的二进制文件),我想要一个适合纯文本的算法.哪一个产生最小的文件大小(首选无损算法)?
顺便说一下,场景是这样的:我正在为包含XML文件的文档(如ODF或MS Office XML)创建一个标准,打包在.zip中.
编辑:'加密'的事情是一个错字; 它应该是'压缩'.
iva*_*off 31
有一个名为EXI(高效XML交换)的W3(尚未发布)标准.
应成为将来压缩XML数据的数据格式(声称是最后一种必要的二进制格式).针对XML进行优化,它比任何传统压缩算法更有效地压缩XML.
使用EXI,您可以动态操作压缩的XML数据(无需解压缩或重新压缩).
EXI =(XML + XMLSchema)为二进制.
在这里你使用开源实现(不知道它是否已经稳定):
非常有用
小智 6
是的,*.zip在实践中最好.这篇USENIX论文中包含的Gory deets 表明,"最佳"压缩器不值得计算成本和特定领域的压缩器不会平均打败zip.
免责声明:根据谷歌的说法,我写了这篇论文,被引用了60多次.
“压缩” XML的另一种替代方法是FI(快速信息集)。
以FI存储的XML仅包含每个标记和属性一次,所有其他出现都引用第一个,从而节省了空间。
看到:
关于java.sun.com的非常好的文章,当然
还有Wikipedia条目
从压缩的角度来看,与EXI的区别在于,快速信息集(结构化明文)的效率较低。
其他重要区别是:FI是具有许多实现的成熟标准。
其中之一:快速信息集项目@ dev.java.net