首先要整第三方库 , 在上一篇中已经有所介绍 , 这里不讲。
关于 jszip和AS的aszip差不多一样。
这里我写了三个文件 : a.txt , b.xml , c.json 打包到一个 ziptest.zip的压缩包中。
a.txt:
b.xml:
c.json:
ziptest.zip的位置:
核心代码 :::
private loadZip() : void{
RES.getResByUrl("resource/ziptest.zip", function(data):void{
let zipj : JSZip = new JSZip(data);
this.analysisJSZip( zipj );
},this, RES.ResourceItem.TYPE_BIN);
}
private analysisJSZip( zipj : JSZip ) : void{
//a.txt解析
let txtstr : JSZipObject = zipj.file("ziptest/a.txt");
console.log('Txt content is ' + txtstr.asText());
//b.xml解析
let xmlstr : JSZipObject = zipj.file("ziptest/b.xml");
let xmlConfig : egret.XML = egret.XML.parse(xmlstr.asText());
console.log("the xml root name is : " + xmlConfig.name);
let xmlChileren : Array<egret.XMLNode> = xmlConfig.children;
let xmlChildrenLen : number = xmlChileren.length;
let xmlCell : egret.XML = null;
for( let i : number = 0 ; i < xmlChildrenLen ; i ++ ){
xmlCell = <egret.XML><any>xmlChileren[i];
if( xmlCell.name == "role" ){
let xmlName : egret.XML = <egret.XML><any>xmlCell.children[0];//获得<name str="Aonaufly"/>
console.log("xml role name is : " + xmlName["$str"]);
break;
}
}
//c.json解析
let jsonstr : JSZipObject = zipj.file("ziptest/c.json");
let jsonc : any = JSON.parse( jsonstr.asText() );
console.log("json name is : " + jsonc.name);
}
关于 zipj.file("ziptest/a.txt");
结果:
遍历Zip中的文件名
const $zip : JSZip = new JSZip( xmlData );
const $files : object = $zip["files"];
for(var key in $files){
console.log(key); //键名
}