[英]Stax: How start to parse from a certain position of XML file?
我有一个很大的XML文件(500Mb)。 在这种情况下是否可以跟踪最后一个解析的元素的位置? 因此,如果我成功解析了其中一半,或者jvm突然崩溃,那么我可以从上次离开的位置立即开始。
您大概可以编写某种形式的历史存储来包含直到解析为止的结构。 但是我怀疑从那点开始继续解析,您将不得不关闭解析器上的所有形式的验证-XML旨在从头到尾保证文档的结构和内容; 它并不是为临时解析而设计的。
在您的情况下,您仍然需要能够提供某种形式的上下文-也许是通过将当前的工作元素树保存在内存中,将其与相关的头信息连接起来,然后像解析新文件一样进行解析; 仅提交未完成的内容,而不是整个文件。
例如,给定XML结构:
<root>
<child id="1">
<subchild id="1'/>
</child>
<child id="2'>
<subchild id="2"/>
<subchild id="3"/>
<child/>
如果解析器在解析<child id="1"/>
后崩溃,则需要制作一个包含<root>
元素的新伪文档,并在继续处理时注意已经解析了子代1的事实。 -如果有任何依赖性问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.