Listing 3: XMLParser.java
import javax.xml.stream.*;
import javax.xml.stream.events.*;
import javax.xml.stream.XMLInputFactory;
import java.io.*;
public class XMLParser{
public void parseXMLDocument(){
try{
XMLInputFactory inputFactory=XMLInputFactory.newInstance();
InputStream input=new FileInputStream(new
File("C:/STAX/catalog.xml"));
XMLStreamReader xmlStreamReader
=inputFactory.createXMLStreamReader(input);
while(xmlStreamReader.hasNext()){
int event=xmlStreamReader.next();
if(event==XMLStreamConstants.START_DOCUMENT){
System.out.println("Event Type:START_DOCUMENT");
System.out.println("Document
Encoding:"+xmlStreamReader.getEncoding());
System.out.println("XML
Version:"+xmlStreamReader.getVersion());
}
if(event==XMLStreamConstants.START_ELEMENT){
System.out.println("Event Type: START_ELEMENT");
System.out.println("Element
Prefix:"+xmlStreamReader.getPrefix());
System.out.println("Element Local
Name:"+xmlStreamReader.getLocalName());
System.out.println("Namespace URI:"+xmlStreamReader.getNamespaceURI());
for(int i=0; i<xmlStreamReader.getAttributeCount();i++){
System.out.println("Attribute
Prefix:"+xmlStreamReader.getAttributePrefix(i));
System.out.println("Attribute
Namespace:"+xmlStreamReader.getAttributeNamespace(i));
System.out.println("Attribute Local
Name:"+xmlStreamReader.getAttributeLocalName(i));
System.out.println("Attribute
Value:"+xmlStreamReader.getAttributeValue(i));
}
}
if(event==XMLStreamConstants.ATTRIBUTE){
System.out.println("Event Type:ATTRIBUTE");
}
if(event==XMLStreamConstants.CHARACTERS){
System.out.println("Event Type: CHARACTERS");
System.out.println("Text:"+xmlStreamReader.getText());
}
if(event==XMLStreamConstants.COMMENT){
System.out.println("Event Type:COMMENT");
System.out.println("Comment
Text:"+xmlStreamReader.getText());
}
if(event==XMLStreamConstants.END_DOCUMENT){
System.out.println("Event Type:END_DOCUMENT");
}
if(event==XMLStreamConstants.END_ELEMENT){
System.out.println("Event Type: END_ELEMENT");
}
if(event==XMLStreamConstants.NAMESPACE){
System.out.println("Event Type:NAMESPACE");
}
if(event==XMLStreamConstants.PROCESSING_INSTRUCTION){
System.out.println("Event Type: PROCESSING_INSTRUCTION");
System.out.println("PI
Target:"+xmlStreamReader.getPITarget());
System.out.println("PI Data:"+xmlStreamReader.getPIData());
}
if(event==XMLStreamConstants.SPACE){
System.out.println("Event Type: SPACE");
System.out.println("Text:"+xmlStreamReader.getText());
}
}
}catch(FactoryConfigurationError
e){System.out.println("FactoryConfigurationError"+e.getMessa
ge());}
catch(XMLStreamException
e){System.out.println("XMLStreamException"+e.getMessage());}
catch(IOException
e){System.out.println("IOException"+e.getMessage());}
}
public static void main(String[] argv){
XMLParser xmlParser=new XMLParser();
xmlParser.parseXMLDocument();
}
}
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.