<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(); } }


上一篇:
下一篇:
切换中文