Java 如何存储大的压缩XML并有效地只提取它的某些特定数据(Alfresco)?
压缩可以从根本上减少较大的XML文件大小,这会对以下方面产生影响:Java 如何存储大的压缩XML并有效地只提取它的某些特定数据(Alfresco)?,java,xml,alfresco,stax,Java,Xml,Alfresco,Stax,压缩可以从根本上减少较大的XML文件大小,这会对以下方面产生影响: 存储空间使用情况,IO等待(读取和写入) 网络使用 我只需要从压缩的XML中提取一些特定的数据。 这是Rhino的JavaScript(主要是Java)示例: 但是,如果我只需要提取一些特定元素(例如从XML头中提取),就不需要将完整的XML加载到DOM中。当找到所有请求的项(或者没有机会找到它们)时,算法应该停止读取XML文件 是否有Alfresco提供的服务或java库可以这样做,并使用例如()从XML中提取请求的项目?
- 存储空间使用情况,IO等待(读取和写入)
- 网络使用
是否有Alfresco提供的服务或java库可以这样做,并使用例如()从XML中提取请求的项目?我认为您可以很好地使用Stax来实现这一点:
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLEventReader r = factory.createXMLEventReader
(ze.getName(),zis );
然后使用XMLEventReader逐个读取XMLEvent。
如果您在正在查找的XML中找到了相关的标记和值,可以调用r.close(),这将关闭Stax解析器(但不是zip输入流)并继续下一个zip条目。我认为您可以很好地使用Stax:
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLEventReader r = factory.createXMLEventReader
(ze.getName(),zis );
然后使用XMLEventReader逐个读取XMLEvent。
如果在要查找的XML中找到了相关的标记和值,可以调用r.close(),这将关闭Stax解析器(但不是zip输入流)并继续下一个zip条目。似乎并不容易。您能告诉我们如何指定要检索的内容吗?例如,第一个非根标记、第300个标记、所有文本内容。。。如果我们知道这一点,可能会有办法尽可能快地完成它。@GPI-例如,pathsy的映射(hashmap),您可以使用Stax2/Woodstox提取所需的XML部分,然后运行XPath。但这并不容易(细节中有很多魔鬼)。我找到了一个解释这项技术和相关源代码的老版本,但它似乎得到了维护。我没有用过它,但它可能正好满足您的需要。@vanOekel谢谢,我将检查这些链接并让您知道结果似乎并不容易。您能告诉我们如何指定要检索的内容吗?例如,第一个非根标记、第300个标记、所有文本内容。。。如果我们知道这一点,可能会有办法尽可能快地完成它。@GPI-例如,pathsy的映射(hashmap),您可以使用Stax2/Woodstox提取所需的XML部分,然后运行XPath。但这并不容易(细节中有很多魔鬼)。我找到了一个解释这项技术和相关源代码的老版本,但它似乎得到了维护。我没有使用过它,但它可能刚好满足您的需要。@vanOekel谢谢,我将检查这些链接并让您知道结果谢谢,我知道如何使用StAX:谢谢,我知道如何使用StAX: