gpt4 book ai didi

java - XML 解析中出现内存不足错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:21:48 25 4
gpt4 key购买 nike

我在解析大小超过 350 MB 的 XML 文件时遇到“java.lang.OutOfMemoryError: JAVA Heap Space”错误。

PFB 代码片段:

File file = new File("D:\WS\data.xml");
InputSource source = new InputSource(new FileInputStream(file));
XPathFactory xPathFact = XPathFactory.newInstance();
XPath xPath = xPathFact.newXPath();
XPathExpression expr = xPath.compile("//person");
NodeList nodeList = (NodeList)expr.evaluate(source, XPathConstants.NODESET);

我在尝试评估的最后一行遇到错误。

最佳答案

您可以尝试一种内存消耗较少的方法,允许动态处理目标节点,实际上,它不会将所有节点都放在内存中,因为如果它们不能全部放入堆中,则可能会导致 OOME,它只会保留当前节点。

以下是如何使用 XMLDog 来完成此操作:

XMLDog dog = new XMLDog(null, null, null);
dog.addXPath("//person");
Event event = dog.createEvent();
event.setXMLBuilder(new DOMBuilder());
event.setListener(new InstantEvaluationListener(){
@Override
public void onNodeHit(Expression expression, NodeItem nodeItem){
Node personNode = (Node) nodeItem.xml;
// Treat your person node here
}

@Override
public void finishedNodeSet(Expression expression){}

@Override
public void onResult(Expression expression, Object result){}
});
File file = new File("D:\WS\data.xml");
InputSource source = new InputSource(new FileInputStream(file));
dog.sniff(event, source, false);

有关 XMLDog 的更多详细信息 here .

关于java - XML 解析中出现内存不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38790447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com