Попытка разобрать xml с STAX
для школьного проекта.Если у меня есть элемент:
<binary data></binary data>
, если эти данные занимают до 250 МБ, как с этим бороться?XMLStreamReader
имеет byte[] getElementAsBinary()
, но я не могу удержать эту сумму в памяти.Если кто-то может помочь с этим, я был бы очень признателен.
РЕДАКТИРОВАТЬ
Можно ли как-то читать данные в поток?В настоящее время у меня есть:
private byte[] readBinary(XMLStreamReader2 sr) throws XMLStreamException {
Stax2Util.ByteAggregator aggr = new Stax2Util.ByteAggregator();
byte[] buffer = aggr.startAggregation();
while (true) {
int offset = 0;
int len = buffer.length;
do {
int readCount = sr.readElementAsBinary(buffer, offset, len);
if (readCount < 1) { // all done!
return aggr.aggregateAll(buffer, offset);
}
offset += readCount;
len -= readCount;
} while (len > 0);
buffer = aggr.addFullBlock(buffer);
}
}