xml压缩 java_Zlib压缩算法在Java与Delphi间交互实现(压缩XML交互)

一个典型应用中,使用delphi作为客户端,J2EE服务端,两者之间用XML作为数据交换,为了提高效率,对XML数据进行压缩,为此需要找到一种压缩/解压算法能够两个平台之间交互处理,使用ZLIB算法就是一个不错的解决方案。

1、JAVA实现

在JDK中,在java.util.zip包中已经内置了ZLIB的实现,示例代码如下:

1//解压

2 public String decompressData(String encdata) {

3 try {

4 ByteArrayOutputStream bos = new ByteArrayOutputStream();

5 InflaterOutputStream zos = new InflaterOutputStream(bos);

6 zos.write(convertFromBase64(encdata));

7 zos.close();

8 return new String(bos.toByteArray());

9 } catch (Exception ex) {

10 ex.printStackTrace();

11 return "UNZIP_ERR";

12 }

13 }

14

15 //压缩

16 public String compressData(String data) {

17 try {

18 ByteArrayOutputStream bos = new ByteArrayOutputStream();

19 DeflaterOutputStream zos = new DeflaterOutputStream(bos);

20 zos.write(data.getBytes());

21 zos.close();

22 return new String(convertToBase64(bos.toByteArray()));

23 } catch (Exception ex) {

24 ex.printStackTrace();

25 return "ZIP_ERR";

26 }

27 }

2、DELPHI中的实现

在DELPHI中,有第3方的控件可以利用来实现压缩/解压,这里我们选择VCLZIP V3.04,可以从这里下载http://www.vclzip.net。为了提高通用性,我们可以编写一个标准的DLL,就可以在Win32平台随意调用了,关键代码如下:

function Cmip_CompressStr(txt: PChar): pchar; stdcall;

var

zip: TVclZip;

compr: string;

data: PChar;

begin

zip := TVclZip.Create(nil);

compr := zip.ZLibCompressString(txt);

data := pchar(Base64EncodeStr(compr));

Result := StrNew(data);

zip.Free

end;

function Cmip_DeCompressStr(txt: PChar): pchar; stdcall;

var

zip: TVCLUnZip;

compr: string;

data: PChar;

begin

zip := TVCLUnZip.Create(nil);

compr := zip.ZLibDecompressString(Base64DecodeStr(txt));

data := StrNew(pchar(compr));

Result := data;

zip.Free

end;

参考:http://m.blog.csdn.net/blog/fghydx/22741531

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值