Advanced   Java   Services StAX   XMLStreamWriter Back Next Up Home


XMLStreamWriter

Das Interface javax.xml.stream.XMLStreamWriter ist das Gegenstück zum XMLStreamReader. Realisiert wird es, wie nicht anders zu erwarten, über eine entsprechende Factory. Mit der so erhaltenen Instanz kann man XML-Dateien sehr einfach erstellen. Wir wollen die folgende Datei erzeugen:


Die Datei test.xml
<?xml version="1.0" ?>
<buch>
<titel>Deutschland, ein Wintermaerchen</titel>
<autor>Heinrich Heine</autor>
<isbn type="10">3-86688-192-9</isbn>
</buch>

Das Vorgehen

Da der Code recht einfach ist, verzichten wir auf eine eigene Klasse.

import java.io.FileWriter;
import java.io.IOException;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;

/**
 * @author hms
 *
 * Schreiben mit Hilfe eines XMLStreamWriters
 * Gegenstück zu StreamReader
 *
 * Attribute müssen VOR dem text geschrieben werden, sonst
 * javax.xml.stream.XMLStreamException: Attribute not associated with any element
 */
public class SAX_4_StAX_XMLStreamWriter
{
   public static void main(String[] args)
   {
      XMLOutputFactory factory = XMLOutputFactory.newInstance();
      XMLStreamWriter xmlStreamWriter = null;
      try
      {
         xmlStreamWriter = factory.createXMLStreamWriter(new FileWriter("test.xml"));
         System.out.println("start writing");
         xmlStreamWriter.writeStartDocument(); //  <?xml version="1.0" ?>
         xmlStreamWriter.writeCharacters("\n");
         xmlStreamWriter.writeStartElement("buch");  // <> wird ergänzt
         xmlStreamWriter.writeCharacters("\n");
         xmlStreamWriter.writeStartElement("titel");
         xmlStreamWriter.writeCharacters("Deutschland, ein Wintermaerchen");
         xmlStreamWriter.writeEndElement();
         xmlStreamWriter.writeCharacters("\n");
         xmlStreamWriter.writeStartElement("autor");
         xmlStreamWriter.writeCharacters("Heinrich Heine");
         xmlStreamWriter.writeEndElement();  // </autor>
         xmlStreamWriter.writeCharacters("\n");
         xmlStreamWriter.writeStartElement("isbn");
         xmlStreamWriter.writeAttribute("type", "10");  //
         xmlStreamWriter.writeCharacters("3-86688-192-9");
         xmlStreamWriter.writeEndElement();  // </isbn>
         xmlStreamWriter.writeCharacters("\n");
         xmlStreamWriter.writeEndElement(); // </buch>
         xmlStreamWriter.writeCharacters("\n");
         System.out.println("end writing");
      }
      catch (FactoryConfigurationError | XMLStreamException | IOException ex)
      {
         ex.printStackTrace();
      }
      finally
      {
         if (xmlStreamWriter != null)
            try
            {
               xmlStreamWriter.close();
               System.out.println("writer closed");
            }
            catch (XMLStreamException ex)
            {
               ex.printStackTrace();
            }
      }
   }
}

Kleine Erläuterungen

Valid XHTML 1.0 Strict top Back Next Up Home