33. 6. 1. StAX是一个类似SAX的技术。 |
|
StAX is based on a pull technology. |
StAX is the client that queries the StAX parser for more elements. |
It allows you to iterate over the elements being read, similar to having a ResultSet in a JDBC application. |
StAX classes and interfaces are in javax.xml.stream package and its two subpackages, javax.xml.stream.events and javax.xml.stream.util. |
The four most prominent interfaces are XMLStreamReader, XMLEventReader, XMLStreamWriter, and XMLEventWriter, all of which are part of javax.xml.stream. |
import java.io.FileReader;
import java.io.Reader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamReader;
public class XMLStreamReaderDemo {
public static void main(String[] args) throws Exception {
XMLInputFactory factory = XMLInputFactory.newInstance();
Reader fileReader = new FileReader("source.xml");
XMLStreamReader reader = factory.createXMLStreamReader(fileReader);
while (reader.hasNext()) {
process(reader);
reader.next();
}
}
private static void process(XMLStreamReader reader) {
int eventType = reader.getEventType();
switch (eventType) {
case XMLStreamConstants.START_ELEMENT:
System.out.println("Start element: " + reader.getLocalName());
int count = reader.getAttributeCount();
for (int i = 0; i < count; i++) {
String name = reader.getAttributeLocalName(i);
String value = reader.getAttributeValue(i);
System.out.println("\tAttribute name/value: " + name + "/" + value);
}
break;
case XMLStreamConstants.END_ELEMENT:
System.out.println("End element: " + reader.getLocalName());
break;
case XMLStreamConstants.CHARACTERS:
System.out.println("Text: " + reader.getText());
break;
default:
break;
}
}
}
|
|