我有一个XML文件,如:
<People>
<Person>
<Name>John</Name>
<Lastname>Doe</Lastname>
<Age>30</Age>
</Person>
<Person>
<Name>Jane</Name>
<Lastname>Doe</Lastname>
<Age>29</Age>
</Person>
</People>
它被压缩为.zip
个文件。我可以通过以下方式轻松阅读独立(非压缩)文件:
HTML
<input type="file" id="unzipTest">
的JavaScript
document.getElementById( 'unzipTest' ).addEventListener( 'change', unzipFile );
function unzipFile( event ) {
var eTarget = event.target;
var file = eTarget.files[ 0 ];
var reader = new FileReader();
reader.onload = function(){
var result = reader.result;
console.log( 'result: ', result );
};
reader.readAsText( file );
}
我正确地在result
变量中获取XML文件内容。
zip
文件时,问题。 我这样做:
function unzipFile( event ) {
var eTarget = event.target;
var file = eTarget.files[ 0 ];
var zip = new JSZip();
zip.loadAsync( file, { optimizedBinaryString: true } ).then( function( fileContent ) {
var key = Object.keys( fileContent.files )[ 0 ];
var data = fileContent.files[ key ];
var compressedContent = data[ '_data' ].compressedContent;
console.log( 'compressed content: ', compressedContent );
var blob = new Blob( [ compressedContent ] );
var reader = new FileReader();
reader.onload = function(){
var result = reader.result;
console.log( 'result: ', result );
};
reader.readAsArrayBuffer( blob );
});
}
compressedContent
变量是某种带有位(?)的数组(uint8array)。我试图通过.readAsArrayBuffer();
reader
方法读取此数组,并传递blob
个对象。不幸的是,我得到的是一些奇怪的ArrayBuffer
byteLength
属性,这是一个数字。
我做错了什么以及如何正确阅读提取的XML
文件?
我正在使用JSZip
库:https://stuk.github.io/jszip/
此外 - 我需要它才能使用Internet Explorer 11
[解决] 该解决方案帮助了我:https://stackoverflow.com/a/39964957/4983840