0
我正在通过API运行查询,并且通过InputStream收到了比我通常预期更大的一组XML。这导致我在尝试将XML解析为字符串时遇到堆空间错误。这里是我当前如何解析输入流:在大型输入流中解析xml时遇到问题
public String parseXml(InputStream inputStream) throws IOException {
String myString;
List<String> matchingXmlList = new ArrayList<>();
byte[] byteArray = toByteArray(inputStream);
String tempString = new String(byteArray, StandardCharsets.UTF_8);
return tempString;
}
在正常情况下,这是输出:
<?xml version="1.0" encoding="UTF-8">
<queryResult>
<records />
<records />
<records />
<records />
</queryResult>
接收这样的输出后,然后我用一个匹配器解析每一个人记录节点并将其添加到字符串列表中。但是,当InputStream太大时,我会在尝试将InputStream放入String时遇到内存问题。
有没有办法解析InputStream而不会遇到内存问题?我需要能够将每个单独的记录元素解析为一个XML字符串。