Advanced Java Services | StAX 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 ist dieselbe wie beim XMLStreamWriter.
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 }