All Downloads are FREE. Search and download functionalities are using the official Maven repository.

javolution.xml.stream.XMLStreamWriter Maven / Gradle / Ivy

The newest version!
/*
 * Javolution - Java(TM) Solution for Real-Time and Embedded Systems
 * Copyright (C) 2012 - Javolution (http://javolution.org/)
 * All rights reserved.
 * 
 * Permission to use, copy, modify, and distribute this software is
 * freely granted, provided that this notice is preserved.
 */
package javolution.xml.stream;

import java.lang.CharSequence;

/**
 * 

This interface is similar to * javax.xml.stream.XMLStreamWriter; but it does not forces * dynamic allocation when formatting (any {@link CharSequence CharSequence} * can be used instead of {@link String}).

* *

Except for the speed (faster) and the added flexibility, the * usage/behavior is about the same as its StAX counterpart.

* *

This writer does not require creating new String objects * during XML formatting. Attributes values can be held by a single/reusable * {@link javolution.text.TextBuilder TextBuilder} * (or StringBuilder) instance to avoid adverse effects * on memory footprint (heap), garbage collection and performance. * [code] * // Creates a new writer (potentially recycled). * XMLOutputFactory factory = OSGiServices.getXMLOutputFactory(); * XMLStreamWriter writer = factory.createXMLStreamWriter(outputStream); * * TextBuilder tmp = new TextBuilder(); // To avoid creating new String instances. * writer.writeStartDocument(); * writer.writeStartElement("Time"); * writer.writeAttribute("hour", tmp.clear().append(time.hour); * writer.writeAttribute("minute", tmp.clear().append(time.minute); * writer.writeAttribute("second", tmp.clear().append(time.second); * writer.writeEndElement(); * writer.writeStartDocument(); * * writer.close(); // Closes the writer (does not close underlying output stream). * [/code]

* * @author Jean-Marie Dautelle * @version 6.0 December 12, 2012 */ public interface XMLStreamWriter { /** * Writes a start tag to the output. All writeStartElement methods open a * new scope in the internal namespace context. Writing the corresponding * EndElement causes the scope to be closed. * * @param localName local name of the tag. * @throws XMLStreamException */ void writeStartElement(CharSequence localName) throws XMLStreamException; /** * Writes a start tag to the output. * * @param namespaceURI the namespaceURI of the prefix to use. * @param localName local name of the tag. * @throws XMLStreamException if the namespace URI has not been bound * to a prefix and this writer does not {@link * XMLOutputFactory#IS_REPAIRING_NAMESPACES repair namespaces}. */ void writeStartElement(CharSequence namespaceURI, CharSequence localName) throws XMLStreamException; /** * Writes a start tag to the output. * * @param localName local name of the tag. * @param prefix the prefix of the tag. * @param namespaceURI the uri to bind the prefix to. * @throws XMLStreamException if the namespace URI has not been bound * to a prefix and this writer does not {@link * XMLOutputFactory#IS_REPAIRING_NAMESPACES repair namespaces}. */ void writeStartElement(CharSequence prefix, CharSequence localName, CharSequence namespaceURI) throws XMLStreamException; /** * Writes an empty element tag to the output. * * @param namespaceURI the uri to bind the tag to. * @param localName local name of the tag. * @throws XMLStreamException if the namespace URI has not been bound * to a prefix and this writer does not {@link * XMLOutputFactory#IS_REPAIRING_NAMESPACES repair namespaces}. */ void writeEmptyElement(CharSequence namespaceURI, CharSequence localName) throws XMLStreamException; /** * Writes an empty element tag to the output. * * @param prefix the prefix of the tag. * @param localName local name of the tag. * @param namespaceURI the uri to bind the tag to. * @throws XMLStreamException if the namespace URI has not been bound * to a prefix and this writer does not {@link * XMLOutputFactory#IS_REPAIRING_NAMESPACES repair namespaces}. */ void writeEmptyElement(CharSequence prefix, CharSequence localName, CharSequence namespaceURI) throws XMLStreamException; /** * Writes an empty element tag to the output. * * @param localName local name of the tag. * @throws XMLStreamException */ void writeEmptyElement(CharSequence localName) throws XMLStreamException; /** * Writes an end tag to the output relying on the internal state of the * writer to determine the prefix and local name of the event. * * @throws XMLStreamException */ void writeEndElement() throws XMLStreamException; /** * Closes any start tags and writes corresponding end tags. * * @throws XMLStreamException */ void writeEndDocument() throws XMLStreamException; /** * Close this writer and free any resources associated with the writer. This * must not close the underlying output stream. * * @throws XMLStreamException */ void close() throws XMLStreamException; /** * Write any cached data to the underlying output mechanism. * * @throws XMLStreamException */ void flush() throws XMLStreamException; /** * Writes an attribute to the output stream without a prefix. * * @param localName the local name of the attribute. * @param value the value of the attribute. * @throws IllegalStateException if the current state does not allow * attribute writing. * @throws XMLStreamException */ void writeAttribute(CharSequence localName, CharSequence value) throws XMLStreamException; /** * Writes an attribute to the output stream. * * @param prefix the prefix for this attribute. * @param namespaceURI the uri of the prefix for this attribute * @param localName the local name of the attribute. * @param value the value of the attribute. * @throws IllegalStateException if the current state does not allow * attribute writing. * @throws XMLStreamException if the namespace URI has not been bound * to a prefix and this writer does not {@link * XMLOutputFactory#IS_REPAIRING_NAMESPACES repair namespaces}. */ void writeAttribute(CharSequence prefix, CharSequence namespaceURI, CharSequence localName, CharSequence value) throws XMLStreamException; /** * Writes an attribute to the output stream. * * @param namespaceURI the uri of the prefix for this attribute. * @param localName the local name of the attribute. * @param value the value of the attribute. * @throws IllegalStateException if the current state does not allow * attribute writing. * @throws XMLStreamException if the namespace URI has not been bound * to a prefix and this writer does not {@link * XMLOutputFactory#IS_REPAIRING_NAMESPACES repair namespaces}. */ void writeAttribute(CharSequence namespaceURI, CharSequence localName, CharSequence value) throws XMLStreamException; /** * Writes a namespace to the output stream. If the prefix argument to this * method is the empty string, "xmlns", or null this method * will delegate to writeDefaultNamespace. * * @param prefix the prefix to bind this namespace to or null * @param namespaceURI the uri to bind the prefix. * @throws IllegalStateException if the current state does not allow * namespace writing. * @throws XMLStreamException */ void writeNamespace(CharSequence prefix, CharSequence namespaceURI) throws XMLStreamException; /** * Writes the default namespace to the stream. * * @param namespaceURI the uri to bind the default namespace to or * null (to map the prefix to "" URI) * @throws IllegalStateException if the current state does not allow * namespace writing. * @throws XMLStreamException */ void writeDefaultNamespace(CharSequence namespaceURI) throws XMLStreamException; /** * Writes an xml comment with the data enclosed. * * @param data the data contained in the comment or null * @throws XMLStreamException */ void writeComment(CharSequence data) throws XMLStreamException; /** * Writes a processing instruction. * * @param target the target of the processing instruction. * @throws XMLStreamException */ void writeProcessingInstruction(CharSequence target) throws XMLStreamException; /** * Writes a processing instruction * * @param target the target of the processing instruction. * @param data the data contained in the processing instruction. * @throws XMLStreamException */ void writeProcessingInstruction(CharSequence target, CharSequence data) throws XMLStreamException; /** * Writes a CData section. * * @param data the data contained in the CData Section. * @throws XMLStreamException */ void writeCData(CharSequence data) throws XMLStreamException; /** * Writes a DTD section (representing the entire doctypedecl * production from the XML 1.0 specification). * * @param dtd the DTD to be written. * @throws XMLStreamException */ void writeDTD(CharSequence dtd) throws XMLStreamException; /** * Writes an entity reference * * @param name the name of the entity. * @throws XMLStreamException */ void writeEntityRef(CharSequence name) throws XMLStreamException; /** * Writes the XML Declaration. Defaults the XML version to 1.0 and the * encoding (if any) to the one specified when the instance is created * using {@link XMLOutputFactory}. * * @throws XMLStreamException */ void writeStartDocument() throws XMLStreamException; /** * Writes the XML Declaration. Default the encoding (if any) to the one * specified when the instance is created using {@link XMLOutputFactory}. * * @param version the version of the xml document or null. * @throws XMLStreamException */ void writeStartDocument(CharSequence version) throws XMLStreamException; /** * Writes the XML Declaration. Note that the encoding parameter does not set * the actual encoding of the underlying output. That must be set when the * instance when the instance is created using {@link XMLOutputFactory}. * * @param encoding the encoding of the xml declaration or null. * @param version the version of the xml document or null. * @throws XMLStreamException */ void writeStartDocument(CharSequence encoding, CharSequence version) throws XMLStreamException; /** * Writes text to the output. * * @param text the value to write or null. * @throws XMLStreamException */ void writeCharacters(CharSequence text) throws XMLStreamException; /** * Writes text to the output. * * @param text the value to write * @param start the starting position in the array. * @param length the number of characters to write. * @throws XMLStreamException */ void writeCharacters(char[] text, int start, int length) throws XMLStreamException; /** * Gets the prefix the specified uri is bound to. * * @param uri namespace URI * @return the prefix for the URI or null * @throws XMLStreamException */ CharSequence getPrefix(CharSequence uri) throws XMLStreamException; /** * Sets the prefix the uri is bound to. This prefix is bound in the scope of * the current START_ELEMENT / END_ELEMENT pair. If this method is called * before a START_ELEMENT has been written the prefix is bound in the root * scope. * * @param prefix the prefix to bind to the uri. * @param uri the uri to bind to the prefix or null * @throws XMLStreamException */ void setPrefix(CharSequence prefix, CharSequence uri) throws XMLStreamException; /** * Binds a URI to the default namespace. This URI is bound in the scope of * the current START_ELEMENT / END_ELEMENT pair. If this method is called * before a START_ELEMENT has been written the uri is bound in the root * scope. * * @param uri the uri to bind to the default namespace or null. * @throws XMLStreamException */ void setDefaultNamespace(CharSequence uri) throws XMLStreamException; /** * Gets the value of a feature/property from the underlying implementation. * * @param name the name of the property. * @return the value of the property. * @throws IllegalArgumentException if the property is not supported. */ Object getProperty(String name) throws IllegalArgumentException; }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy