Listing 2: XMLOutputter.java
import javax.xml.stream.*;
import javax.xml.stream.events.*;
import javax.xml.stream.XMLOutputFactory;
import java.io.*;

public class XMLWriter{

public void generateXMLDocument(){
try{
XMLOutputFactory 

outputFactory=XMLOutputFactory.newInstance();
FileWriter output=new FileWriter(new File("C:/STAX/catalog.xml"));
XMLStreamWriter 

xmlStreamWriter=outputFactory.createXMLStreamWriter(output);
xmlStreamWriter.writeStartDocument("UTF-8","1.0");
xmlStreamWriter.writeComment("A OReilly Journal Catalog");
xmlStreamWriter.writeProcessingInstruction("catalog","journal='OReilly'");
xmlStreamWriter.writeStartElement("journal","catalog","http://OnJava.com/Journal");
xmlStreamWriter.writeNamespace("journal","http://OnJava.com/Journal");
xmlStreamWriter.writeNamespace("xsi","http://www.w3.org/2001

/XMLSchema-instance");
xmlStreamWriter.writeAttribute("xsi:noNamespaceSchemaLocatio

n","file://c:/Schemas/catalog.xsd");
xmlStreamWriter.writeAttribute("publisher","OReilly");

xmlStreamWriter.writeStartElement("journal","journal","http://OnJava.com/Journal");
xmlStreamWriter.writeAttribute("date","January 2004");
xmlStreamWriter.writeAttribute("title","ONJava");
xmlStreamWriter.writeStartElement("article");
xmlStreamWriter.writeStartElement("title");
xmlStreamWriter.writeCharacters("Data Binding with XMLBeans");
xmlStreamWriter.writeEndElement();
xmlStreamWriter.writeStartElement("author");
xmlStreamWriter.writeCharacters("Daniel Steinberg");
xmlStreamWriter.writeEndElement();
xmlStreamWriter.writeEndElement();
xmlStreamWriter.writeEndElement();

xmlStreamWriter.writeStartElement("journal","journal","http:

//OnJava.com/Journal");
xmlStreamWriter.writeAttribute("date","July 2004");
xmlStreamWriter.writeAttribute("title","java.net");
xmlStreamWriter.writeStartElement("article");
xmlStreamWriter.writeStartElement("title");
xmlStreamWriter.writeCharacters("Hibernate: A Developer's Notebook");
xmlStreamWriter.writeEndElement();
xmlStreamWriter.writeStartElement("author");
xmlStreamWriter.writeCharacters("James Elliott");
xmlStreamWriter.writeEndElement();
xmlStreamWriter.writeEndElement();
xmlStreamWriter.writeEndElement();
xmlStreamWriter.writeEndElement();

xmlStreamWriter.flush();
xmlStreamWriter.close();

}catch(FactoryConfigurationError e){}
catch(XMLStreamException e){}
catch(IOException e){}

}
public static void main(String[] argv){

XMLWriter xmlWriter=new XMLWriter();
xmlWriter.generateXMLDocument();
}
}

How to Add Java Applets to Your Site

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.