http://tutorials.jenkov.com/java-xml/stax-xmlstreamreader.html에서 가져옴
The XMLStreamReader
class in Java StAX provides a Cursor
style API for parsing XML. Like theIterator
API it allows you to move from event to event in the XML, letting you control when to move to the next event. An "event" in this case is for instance the beginning of an element, the end of an element, a group of text etc. In other words, pretty much the same events you would get from a SAX parser.
To read more about the difference between the Iterator
and Cursor
style API's, read the introduction to StAX: Java StAX Parser
You create an XMLStreamReader
via the javax.xml.stream.XMLInputFactory
class. Here is how that looks:
XMLInputFactory factory = XMLInputFactory.newInstance(); //get Reader connected to XML input from somewhere.. Reader reader = getXmlReader(); try { XMLStreamReader streamReader = factory.createXMLStreamReader(reader); } catch (XMLStreamException e) { e.printStackTrace(); }
Once created you can iterate through the XML input from the underlying Reader
. Here is how that looks:
XMLStreamReader streamReader = factory.createXMLStreamReader( new FileReader("data\\test.xml")); while(streamReader.hasNext()){ streamReader.next(); if(streamReader.getEventType() == XMLStreamReader.START_ELEMENT){ System.out.println(streamReader.getLocalName()); } }
You obtain the event type by calling the XMLStreamReader.getEventType()
method. When you know the event type, you can process the given event as you need.
XML Stream Events
Below is a list of the events you can encounter in an XML stream. There are constants for each of these events in the javax.xml.stream.XMLStreamConstants
interface.
- ATTRIBUTE
- CDATA
- CHARACTERS
- COMMENT
- DTD
- END_DOCUMENT
- END_ELEMENT
- ENTITY_DECLARATION
- ENTITY_REFERENCE
- NAMESPACE
- NOTATION_DECLARATION
- PROCESSING_INSTRUCTION
- SPACE
- START_DOCUMENT
- START_ELEMENT
XML Event Processing
From the XMLStreamReader
you can get access to the corresponding XML data. You can also get information about where (line number + column number) in the XML stream the event was encountered.
'밤을 지새다 > Java' 카테고리의 다른 글
Java StAX Event (0) | 2012.05.01 |
---|---|
Java StAX: XMLStreamWriter - The Cursor Writer API (0) | 2012.04.30 |
Java StAX: XMLEventWriter - The Iterator Writer API (0) | 2012.04.30 |
Java StAX: XMLEventReader - The Iterator API (0) | 2012.04.30 |
Java StAX: XMLOutputFactory (0) | 2012.04.30 |