Advanced   Java   Services StAX   XMLEventWriter Back Next Up Home


XMLEventWriter

Das Interface javax.xml.stream.XMLEventWriter ist das Gegenstück zum XMLEventReader. Das Vorgehen gleicht dem beim XMLStreamWriter, allerding ist es ein wenig aufwendiger.


Die Datei test.xml

Die datei ist dieselbe wie beim XMLStreamWriter.


Das Vorgehen

Da der Code immer noch relativ einfach ist, verzichten wir auch hier auf eine eigene Klasse.

import java.io.FileWriter;
import java.io.IOException;

import javax.xml.namespace.QName;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLEventFactory;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.Characters;
import javax.xml.stream.events.EndDocument;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.StartDocument;
import javax.xml.stream.events.StartElement;

/**
 * @author hms
 *
 * Schreiben mit Hilfe eines XMLEventWriters
 * Gegenstück zu EventReader
 *
 *
 */
public class SAX_5_StAX_XMLEventWriter_1
{
   public static void main(String[] args)
   {
      XMLOutputFactory factory = XMLOutputFactory.newInstance();
      XMLEventWriter xmlEventWriter = null;

      XMLEventFactory  eventFactory = XMLEventFactory.newInstance();

      try
      {
         xmlEventWriter = factory.createXMLEventWriter(new FileWriter("test.xml"));
         StartDocument startDocument = eventFactory.createStartDocument();
         xmlEventWriter.add(startDocument);

         Characters space = eventFactory.createSpace("\n");
         xmlEventWriter.add(space);

         QName qBuch = new QName("buch");
         StartElement startElement= eventFactory.createStartElement(qBuch, null, null);
         xmlEventWriter.add(startElement);
         xmlEventWriter.add(space);

         QName qTitel = new QName("titel");
         startElement= eventFactory.createStartElement(qTitel, null, null);
         xmlEventWriter.add(startElement);
         Characters chars = eventFactory.createCharacters("Deutschland, ein Wintermaerchen");
         xmlEventWriter.add(chars);
         EndElement endTitel = eventFactory.createEndElement(qTitel, null);  //
         xmlEventWriter.add(endTitel);
         xmlEventWriter.add(space);

         QName qAutor = new QName("autor");
         startElement= eventFactory.createStartElement(qAutor, null, null);
         xmlEventWriter.add(startElement);
         chars = eventFactory.createCharacters("Heinrich Heine");
         xmlEventWriter.add(chars);
         EndElement endAutor = eventFactory.createEndElement(qAutor, null);  //
         xmlEventWriter.add(endAutor);
         xmlEventWriter.add(space);

         QName qISBN = new QName("isbn");
         startElement= eventFactory.createStartElement(qISBN, null, null);
         xmlEventWriter.add(startElement);

         Attribute attr = eventFactory.createAttribute("type", "10");
         xmlEventWriter.add(attr);
         chars = eventFactory.createCharacters("3-86688-192-9");
         xmlEventWriter.add(chars);
         EndElement endISBN = eventFactory.createEndElement(qISBN, null);  //
         xmlEventWriter.add(endISBN);
         xmlEventWriter.add(space);

         EndElement endBuch = eventFactory.createEndElement(qBuch, null);  //
         xmlEventWriter.add(endBuch);

         EndDocument endDocument = eventFactory.createEndDocument();  // nicht notwendig
         xmlEventWriter.add(endDocument);
      }
      catch (FactoryConfigurationError | XMLStreamException | IOException ex)
      {
         ex.printStackTrace();
      }
      finally
      {
         if (xmlEventWriter != null)
            try
            {
               xmlEventWriter.close();
               System.out.println("writer closed");
            }
            catch (XMLStreamException ex)
            {
               ex.printStackTrace();
            }
      }
   }  // end main
}

Valid XHTML 1.0 Strict top Back Next Up Home