Thursday, June 29, 2006
Tuesday, June 27, 2006
Friday, June 23, 2006
Streaming API for XML (STAX)
JSR 173: Streaming API for XML:
The Streaming API for XML (StAX) parsing will specify a Java-based, pull-parsing API for XML. The streaming API gives parsing control to the programmer by exposing a simple iterator based API. This allows the programmer to ask for the next event (pull the event) and allows state to be stored in a procedural fashion. The following example reads an XML document and modifies it by inserting a new tag at a specific location.
package com.myco.stax;
import java.io.FileInputStream;
import javax.xml.stream.*;
import javax.xml.stream.events.*;
import javax.xml.namespace.QName;
public class StAX_Iterator {
public static void main(String args[]) throws Exception {
System.out.println("Starting parser..");
//Read input XML
XMLEventReader eventReader = XMLInputFactory.newInstance().createXMLEventReader(new FileInputStream("C:/STAX/xmlpull/RawBidSet.xml"));
//Configure output stream.
XMLOutputFactory factory = XMLOutputFactory.newInstance();
XMLEventFactory eventFac = XMLEventFactory.newInstance();
XMLEventWriter ew = factory.createXMLEventWriter(new java.io.FileOutputStream("C:/STAX/xmlpull/rbs-modified.xml"),"UTF-8");
while(eventReader.hasNext()) {
XMLEvent event = eventReader.next();
if(event != null){
//Pipe everything other than comments into the outputstream
if(! (event instanceof com.bea.xml.stream.events.CommentEvent)){
ew.add(event);
}
}
//Insert a new tag called mrid after the <name> tag inside every <GeneratingBid> or <LoadBid> or <InterTieBid> tag
if (event instanceof StartElement && ( ((StartElement)event).getName().getLocalPart().equals("GeneratingBid") ((StartElement)event).getName().getLocalPart().equals("LoadBid") ((StartElement)event).getName().getLocalPart().equals("InterTieBid") ) ) {
while(eventReader.hasNext()){
event = eventReader.next();
if(!(event instanceof com.bea.xml.stream.events.CommentEvent)){
ew.add(event);
}
if (event instanceof EndElement && (((EndElement)event).getName().getLocalPart().equals("name"))) {
ew.add(eventFac.createStartElement("",null,"mrid"));
ew.add(eventFac.createCharacters("QWE123"));
ew.add(eventFac.createEndElement("",null,"mrid"));
break;
}
}
}
}
ew.close();
System.out.println("Done.");
} //end main
} //end class
The Streaming API for XML (StAX) parsing will specify a Java-based, pull-parsing API for XML. The streaming API gives parsing control to the programmer by exposing a simple iterator based API. This allows the programmer to ask for the next event (pull the event) and allows state to be stored in a procedural fashion. The following example reads an XML document and modifies it by inserting a new tag at a specific location.
package com.myco.stax;
import java.io.FileInputStream;
import javax.xml.stream.*;
import javax.xml.stream.events.*;
import javax.xml.namespace.QName;
public class StAX_Iterator {
public static void main(String args[]) throws Exception {
System.out.println("Starting parser..");
//Read input XML
XMLEventReader eventReader = XMLInputFactory.newInstance().createXMLEventReader(new FileInputStream("C:/STAX/xmlpull/RawBidSet.xml"));
//Configure output stream.
XMLOutputFactory factory = XMLOutputFactory.newInstance();
XMLEventFactory eventFac = XMLEventFactory.newInstance();
XMLEventWriter ew = factory.createXMLEventWriter(new java.io.FileOutputStream("C:/STAX/xmlpull/rbs-modified.xml"),"UTF-8");
while(eventReader.hasNext()) {
XMLEvent event = eventReader.next();
if(event != null){
//Pipe everything other than comments into the outputstream
if(! (event instanceof com.bea.xml.stream.events.CommentEvent)){
ew.add(event);
}
}
//Insert a new tag called mrid after the <name> tag inside every <GeneratingBid> or <LoadBid> or <InterTieBid> tag
if (event instanceof StartElement && ( ((StartElement)event).getName().getLocalPart().equals("GeneratingBid") ((StartElement)event).getName().getLocalPart().equals("LoadBid") ((StartElement)event).getName().getLocalPart().equals("InterTieBid") ) ) {
while(eventReader.hasNext()){
event = eventReader.next();
if(!(event instanceof com.bea.xml.stream.events.CommentEvent)){
ew.add(event);
}
if (event instanceof EndElement && (((EndElement)event).getName().getLocalPart().equals("name"))) {
ew.add(eventFac.createStartElement("",null,"mrid"));
ew.add(eventFac.createCharacters("QWE123"));
ew.add(eventFac.createEndElement("",null,"mrid"));
break;
}
}
}
}
ew.close();
System.out.println("Done.");
} //end main
} //end class
Subscribe to:
Posts (Atom)