我有两个xml文件,一个是LZW压缩的,另一个是纯文本。我怎么知道是否压缩了?
答案 0 :(得分:4)
显而易见的事情当然是将字符串提供给LZW解压缩器并查看是否存在错误和/或字符串的长度增加了大约200%。
除此之外,(格式良好的)LZW字符串或文件标有magic value 0x1F 0x9D
。当然LZW可以压缩字符串而不包含魔术值,但它是一个开始(非常容易检查)。
一个(格式良好的)XML文档应该以XML声明开头,必须以元素开头,只能选择前面有空格。 XML声明以字符串<?xml
开头,元素标签必须以字母开头
因此,如果您在遇到第一个<
之前看到除空白之外的任何内容,或者后面的下一个字符不是?
或字母(并且在遇到>
之前只跟着字母和数字) ),然后字符串不能是XML。由于您知道该字符串是XML或压缩XML,因此必须对其进行压缩。对于那些有一点正则表达式练习的人来说,用10-15个字符模式来挤压它可能很容易。
答案 1 :(得分:0)
愚蠢的简单测试:第一个字符是<
吗?
答案 2 :(得分:0)
查找无效或无意义的字符(如空字符)。如果它们存在,那么它就被压缩了。
如果没有,那么要么是普通的XML,要么文件非常小(否则这种情况极不可能)。
答案 3 :(得分:0)
如果您想知道它是否已被压缩,这将有所帮助,因此您可以解压缩该文件,并且您愿意使用库来进行繁重的工作:
使用压缩库始终尝试解压缩文件。让它决定文件是否被压缩。之后,将生成的文件传递给xml库,让该库决定您是否有一个有效的和预期的xml文件。如果可能的话,不要重新创建公共库的功能,只需确保对库的返回信息采取适当的行动。