压缩可以从根本上减少大的XML文件大小,这会影响到:
我必须从压缩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从XML中提取所请求的项目。 StAX2 API(Woodstox)?
答案 0 :(得分:0)
我认为你可以很好地使用Stax:
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLEventReader r = factory.createXMLEventReader
(ze.getName(),zis );
然后使用XMLEventReader通过XMLEvent读取XMLEvent。 如果您在XML中找到了相关的标记和值,则可以调用r.close(),它将关闭Stax Parser(但不是zip输入流)并继续下一个zip条目。< / p>