XMLStreamWriter in Java StAX
Die in Java 6 hinzugefügte Streaming-API für XML bietet eine praktische Schnittstelle XMLStreamWriter, die zum Schreiben von XML-Dokumenten verwendet wird. Diese API erfordert nicht den Aufbau einer bestimmten Objektstruktur wie in DOM und die Durchführung von Zwischenaufgaben. Es unterstützt standardmäßig auch Namespaces, was in fortgeschritteneren Situationen sehr nützlich ist.
Methoden, die integriert werden, um ein XMLStreamWriter-Objekt zu erstellen und Daten darin zu schreiben, sind unten wie folgt aufgeführt:
- writeStartDocument()
- writeStartElement()
- schreibeZeichen()
- writeEndElement()
- writeEndDocument()
Es gibt bestimmte Einschränkungen mit XMLStreamWriter in Java StAX, von denen hauptsächlich die folgenden sind:
- Es ist immer noch möglich, nicht wohlgeformte XML-Dokumente zu erstellen, die beispielsweise mehr als ein Root-Element enthalten oder eine Namespace-Definition verpassen.
- XMLStreamWriter rückt seine Ausgabe nicht ein, daher kann es mit einem einfachen Texteditor etwas schwierig sein, sie zu lesen. Daher wird zum Lesen empfohlen, es in einem Webbrowser zu öffnen, von denen die meisten über eine benutzerfreundliche Oberfläche verfügen, um die Struktur von XML-Dokumenten anzuzeigen.
Verfahren:
- Erstellen Sie eine Instanz von XMLStreamWriter mit XMLOutputFactory
- Schreiben Sie den Header des XML und fahren Sie mit dem Schreiben von Elementen fort.
- Nach dem Hinzufügen von Elementen können wir Attribute, Zeichendaten oder CDATA hinzufügen
- Geöffnete Elemente schließen
- Elemente leeren oder Kommentare schreiben
- Schließen und beenden Sie das XML-Dokument
Lassen Sie uns nun mehr darüber diskutieren, wie sie später geschrieben werden, wenn wir sie in unserem Java-Programm implementieren.
Schritt 1: Erstellen Sie eine Instanz von XMLStreamWriter mit XMLOutputFactory.
XMLOutputFactory outputFactory = XMLOutputFactory.newFactory(); XMLStreamWriter xmlStreamWriter = outputFactory.createXMLStreamWriter(outputStream);
Schritt 2: Schreiben Sie den Header des XML und fahren Sie mit dem Schreiben von Elementen fort.
xmlStreamWriter.writeStartElement("gfg");
Schritt 3: Nach dem Hinzufügen von Elementen können wir Attribute, Zeichendaten oder CDATA hinzufügen.
xmlStreamWriter.writeAttribute("id", "10"); xmlStreamWriter.writeCharacters("hello world!"); xmlStreamWriter.writeCData("more text data");
Schritt 4: Geöffnete Elemente schließen
xmlStreamWriter.writeEndElement();
Schritt 5: Leeren Sie Elemente oder schreiben Sie Kommentare, aber beachten Sie, dass dies ein optionaler Schritt ist
xmlStreamWriter.writeEmptyElement("used & new"); xmlStreamWriter.writeComment("Thank you!");
Schritt 6: Schließen und beenden Sie das XML-Dokument.
xmlStreamWriter.writeEndDocument(); xmlStreamWriter.close();
Beispiel
Java
// Java Program to Illustrate XMLStreamWriter in Java StAX // Importing required classes import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.UnsupportedEncodingException; import java.io.Writer; import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; // Main class public class StaxXMLStreamWriter { // Main driver method public static void main(String[] args) throws FileNotFoundException, XMLStreamException, UnsupportedEncodingException { // Try block to check for exceptions try { // File Path String filePath = "D:\\gfg_file.xml"; // Creating FileWriter object Writer fileWriter = new FileWriter(filePath); // Getting the XMLOutputFactory instance XMLOutputFactory xmlOutputFactory = XMLOutputFactory.newInstance(); // Creating XMLStreamWriter object from // xmlOutputFactory. XMLStreamWriter xmlStreamWriter = xmlOutputFactory.createXMLStreamWriter( fileWriter); // Addoing elements to xmlStreamWriter // Custom input element addition xmlStreamWriter.writeStartElement("gfg"); xmlStreamWriter.writeAttribute("id", "10"); xmlStreamWriter.writeCharacters("hello world!"); xmlStreamWriter.writeCData("more text data"); xmlStreamWriter.writeEndElement(); xmlStreamWriter.writeEmptyElement("used & new"); xmlStreamWriter.writeComment("Thank you!"); xmlStreamWriter.writeEndDocument(); // Writing the content on XML file and // close xmlStreamWriter using close() method xmlStreamWriter.flush(); xmlStreamWriter.close(); // Display message for successful execution of // program System.out.println( "XML file created successfully."); } // Catch block to handle exceptions catch (Exception e) { // Print the line number where exception occurs e.printStackTrace(); } } }
Ausgabe:
<gfg id="10">hello world! <![CDATA[more text data]]> </gfg> <used & new/> <!--Thank you!-->
Fazit:
Die Streaming-API für XML bietet eine sehr bequeme, schnelle und speichereffiziente Möglichkeit, XML-Dokumente zu schreiben, ohne sich um Details kümmern und Sonderzeichen maskieren zu müssen. Es ist eine großartige Alternative zu DOM, insbesondere wenn Sie den DOM-Baum aus irgendeinem Grund nicht im Speicher behalten und verwalten müssen .