В этой статье я опишу простой пример потоковой записи XML с помощью Streaming API for XML (StAX).
Все классы располагаются в пакете javax.xml.stream. Для начала нам нужно создать экземпляр класса XMLStreamWriter с помощью фабричного метода newInstance():
1 |
XMLOutputFactory factory = XMLOutputFactory.newInstance(); |
С помощью экземпляра XMLOutputFactory создаётся экземпляр XMLStreamWriter:
1 |
XMLStreamWriter writer = factory.createXMLStreamWriter(stringWriter); |
С помощью созданного writer-а мы пишем XML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
writer = factory.createXMLStreamWriter(fileWriter); writer.writeStartDocument(); writer.writeStartElement("mydocument"); writer.writeStartElement("myelement"); writer.writeCharacters("myvalue"); writer.writeEndElement(); writer.writeStartElement("myelement2"); writer.writeCData("MyCData<#@*&H(@N(#B(UBNOW#PUN$:JKNU "); writer.writeEndElement(); writer.writeEndElement(); writer.writeEndDocument(); writer.flush(); writer.close(); |
Полный исходный код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; import java.io.FileWriter; import java.io.IOException; public class XmlStreamWriterExample { public static void main(String[] args) { XMLOutputFactory factory = XMLOutputFactory.newInstance(); XMLStreamWriter writer = null; try (FileWriter fileWriter = new FileWriter("myoutput.xml")) { writer = factory.createXMLStreamWriter(fileWriter); writer.writeStartDocument(); writer.writeStartElement("mydocument"); writer.writeStartElement("myelement"); writer.writeCharacters("myvalue"); writer.writeEndElement(); writer.writeStartElement("myelement2"); writer.writeCData("MyCData<#@*&H(@N(#B(UBNOW#PUN$:JKNU "); writer.writeEndElement(); writer.writeEndElement(); writer.writeEndDocument(); writer.flush(); writer.close(); } catch (XMLStreamException | IOException e) { e.printStackTrace(); } } } |