background image

Creating an Event Producer

<< readnwrite Sample | Creating a Writer >>
<< readnwrite Sample | Creating a Writer >>
112
S
TREAMING
API
FOR
XML
The StAX
XMLEventWriter
API extends from the
XMLEventConsumer
interface,
and is referred to as an event consumer. By contrast,
XMLEventReader
is an event
producer. StAX supports simultaneous reading and writing, such that it is possi-
ble to read from one XML stream sequentially and simultaneously write to
another stream.
This sample shows how the StAX producer/consumer mechanism can be used to
read and write simultaneously. This sample also shows how a stream can be
modified, and new events can be added dynamically and then written to different
stream.
Creating an Event Producer/Consumer
The first step is to instantiate an event factory and then create an instance of an
event producer/consumer:
XMLEventFactory m_eventFactory=XMLEventFactory.newInstance();
public EventProducerConsumer() {
}
.
.
.
try{
EventProducerConsumer ms = new EventProducerConsumer();
XMLEventReader reader =
XMLInputFactory.newInstance().createXMLEventReader(new
java.io.FileInputStream(args[0]));
XMLEventWriter writer =
XMLOutputFactory.newInstance().createXMLEventWriter(System.out
);
Creating an Iterator
The next step is to create an iterator to parse the stream:
while(reader.hasNext())
{
XMLEvent event = (XMLEvent)reader.next();
if(event.getEventType() == event.CHARACTERS)
{
writer.add(ms.getNewCharactersEvent(event.asCharacters()));
}