压缩可以从根本上减小XML文件的大小,从而影响:


存储空间使用情况,IO等待(读取和写入)
网络使用


我只需要从压缩的XML中提取一些特定的数据。
这是Rhino的JavaScript(主要是Java)示例:

var zis = new java.util.zip.ZipInputStream(document.properties.content.getInputStream());
var ze = zis.getNextEntry();
if (ze!=null){
    var scanner = new java.util.Scanner(zis,"UTF-8").useDelimiter("\\A");
    var content = scanner.hasNext() ? scanner.next() : "";
    var docXml = new XML(content);
    logger.log("xml mytag/text(): "+docXml.mytag);
}
zis.closeEntry();
zis.close();


但是,如果我仅需要提取某些特定元素(例如,从XML标头中提取),则无需将完整的XML加载到DOM。当将找到所有请求的项目(或没有机会找到它们)时,算法应停止读取XML文件。

是否提供任何Alfresco的服务或Java库来执行该服务,并使用例如从XML中提取请求的项目? StAX2 APIWoodstox)?

最佳答案

我认为您可以很好地使用Stax:

XMLInputFactory factory = XMLInputFactory.newInstance();
XMLEventReader r = factory.createXMLEventReader
                   (ze.getName(),zis );


然后使用XMLEventReader通过XMLEvent读取XMLEvent。
如果在要查找的XML中找到了相关的标记和值,则可以调用r.close(),这将关闭Stax Parser(而不是zip Input流)并继续下一个zip条目。

09-29 21:20