【发布时间】:2016-03-02 03:41:32
【问题描述】:
我正在通过 API 运行查询,并且通过 InputStream 接收的 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>
收到这样的输出后,我使用 Matcher 解析每个单独的记录节点并将其添加到字符串列表中。但是当 InputStream 太大时,我在尝试将 InputStream 放入 String 时会遇到内存问题。
有没有办法解析 InputStream 而不会遇到内存问题?我需要能够将每个单独的记录元素解析为 XML 字符串。
【问题讨论】: