<dependencies>
<dependency>
<groupId>com.fasterxml.aalto</groupId>
<artifactId>aalto-xml</artifactId>
<version>1.2.2</version>
</dependency>
</dependencies>
import com.fasterxml.aalto.AsyncByteArrayFeeder;
import com.fasterxml.aalto.AsyncXMLStreamReader;
import com.fasterxml.aalto.stax.InputFactoryImpl;
import javax.xml.stream.XMLStreamException;
import java.io.FileInputStream;
import java.io.IOException;
public class LargeXMLProcessor {
public static void main(String[] args) throws IOException, XMLStreamException {
FileInputStream fileInputStream = new FileInputStream("large_data.xml");
AsyncXMLStreamReader<AsyncByteArrayFeeder> reader = new InputFactoryImpl().createAsyncFor(fileInputStream, 4096);
while (reader.hasNext()) {
int event = reader.next();
if (event == AsyncXMLStreamReader.EVENT_INCOMPLETE) {
continue;
}
if (event == AsyncXMLStreamReader.EVENT_START_ELEMENT && reader.getLocalName().equals("student")) {
String name = null;
int age = 0;
while (reader.hasNext()) {
event = reader.next();
if (event == AsyncXMLStreamReader.EVENT_INCOMPLETE) {
continue;
}
if (event == AsyncXMLStreamReader.EVENT_START_ELEMENT && reader.getLocalName().equals("name")) {
reader.next();
name = reader.getText();
}
if (event == AsyncXMLStreamReader.EVENT_START_ELEMENT && reader.getLocalName().equals("age")) {
reader.next();
age = Integer.parseInt(reader.getText());
}
if (event == AsyncXMLStreamReader.EVENT_END_ELEMENT && reader.getLocalName().equals("student")) {
break;
}
}
}
}
reader.close();
fileInputStream.close();
}
}