Class IndentingXMLStreamWriter

  • All Implemented Interfaces:
    javax.xml.stream.XMLStreamWriter, Indentation

    public class IndentingXMLStreamWriter
    extends StreamWriterDelegate
    implements Indentation
    A filter that indents an XML stream. To apply it, construct a filter that contains another XMLStreamWriter, which you pass to the constructor. Then call methods of the filter instead of the contained stream. For example:
     XMLStreamWriter stream = ...
     stream = new IndentingXMLStreamWriter(stream);
     stream.writeStartDocument();
     ...
     
    The filter inserts characters to format the document as an outline, with nested elements indented. Basically, it inserts a line break and whitespace before:
    • each DTD, processing instruction or comment that's not preceded by data
    • each starting tag that's not preceded by data
    • each ending tag that's preceded by nested elements but not data
    This works well with 'data-oriented' XML, wherein each element contains either data or nested elements but not both. It can work badly with other styles of XML. For example, the data in a 'mixed content' document are apt to be polluted with indentation characters. Indentation can be adjusted by setting the newLine and indent properties. But set them to whitespace only, for best results. Non-whitespace is apt to cause problems, for example when this class attempts to insert newLine before the root element.
    • Constructor Detail

      • IndentingXMLStreamWriter

        public IndentingXMLStreamWriter​(javax.xml.stream.XMLStreamWriter out)
    • Method Detail

      • getIndent

        public java.lang.String getIndent()
        Description copied from interface: Indentation
        The characters used for one level of indentation.
        Specified by:
        getIndent in interface Indentation
        Returns:
        the indentation string
      • setIndent

        public void setIndent​(java.lang.String indent)
        Description copied from interface: Indentation
        Set the characters used for one level of indentation. The default is Indentation.DEFAULT_INDENT. "\t" is a popular alternative.
        Specified by:
        setIndent in interface Indentation
        Parameters:
        indent - the indentation string
      • getNewLine

        public java.lang.String getNewLine()
      • setNewLine

        public void setNewLine​(java.lang.String newLine)
      • writeStartDocument

        public void writeStartDocument()
                                throws javax.xml.stream.XMLStreamException
        Specified by:
        writeStartDocument in interface javax.xml.stream.XMLStreamWriter
        Overrides:
        writeStartDocument in class StreamWriterDelegate
        Throws:
        javax.xml.stream.XMLStreamException
      • writeStartDocument

        public void writeStartDocument​(java.lang.String version)
                                throws javax.xml.stream.XMLStreamException
        Specified by:
        writeStartDocument in interface javax.xml.stream.XMLStreamWriter
        Overrides:
        writeStartDocument in class StreamWriterDelegate
        Throws:
        javax.xml.stream.XMLStreamException
      • writeStartDocument

        public void writeStartDocument​(java.lang.String encoding,
                                       java.lang.String version)
                                throws javax.xml.stream.XMLStreamException
        Specified by:
        writeStartDocument in interface javax.xml.stream.XMLStreamWriter
        Overrides:
        writeStartDocument in class StreamWriterDelegate
        Throws:
        javax.xml.stream.XMLStreamException
      • writeDTD

        public void writeDTD​(java.lang.String dtd)
                      throws javax.xml.stream.XMLStreamException
        Specified by:
        writeDTD in interface javax.xml.stream.XMLStreamWriter
        Overrides:
        writeDTD in class StreamWriterDelegate
        Throws:
        javax.xml.stream.XMLStreamException
      • writeProcessingInstruction

        public void writeProcessingInstruction​(java.lang.String target)
                                        throws javax.xml.stream.XMLStreamException
        Specified by:
        writeProcessingInstruction in interface javax.xml.stream.XMLStreamWriter
        Overrides:
        writeProcessingInstruction in class StreamWriterDelegate
        Throws:
        javax.xml.stream.XMLStreamException
      • writeProcessingInstruction

        public void writeProcessingInstruction​(java.lang.String target,
                                               java.lang.String data)
                                        throws javax.xml.stream.XMLStreamException
        Specified by:
        writeProcessingInstruction in interface javax.xml.stream.XMLStreamWriter
        Overrides:
        writeProcessingInstruction in class StreamWriterDelegate
        Throws:
        javax.xml.stream.XMLStreamException
      • writeComment

        public void writeComment​(java.lang.String data)
                          throws javax.xml.stream.XMLStreamException
        Specified by:
        writeComment in interface javax.xml.stream.XMLStreamWriter
        Overrides:
        writeComment in class StreamWriterDelegate
        Throws:
        javax.xml.stream.XMLStreamException
      • writeEmptyElement

        public void writeEmptyElement​(java.lang.String localName)
                               throws javax.xml.stream.XMLStreamException
        Specified by:
        writeEmptyElement in interface javax.xml.stream.XMLStreamWriter
        Overrides:
        writeEmptyElement in class StreamWriterDelegate
        Throws:
        javax.xml.stream.XMLStreamException
      • writeEmptyElement

        public void writeEmptyElement​(java.lang.String namespaceURI,
                                      java.lang.String localName)
                               throws javax.xml.stream.XMLStreamException
        Specified by:
        writeEmptyElement in interface javax.xml.stream.XMLStreamWriter
        Overrides:
        writeEmptyElement in class StreamWriterDelegate
        Throws:
        javax.xml.stream.XMLStreamException
      • writeEmptyElement

        public void writeEmptyElement​(java.lang.String prefix,
                                      java.lang.String localName,
                                      java.lang.String namespaceURI)
                               throws javax.xml.stream.XMLStreamException
        Specified by:
        writeEmptyElement in interface javax.xml.stream.XMLStreamWriter
        Overrides:
        writeEmptyElement in class StreamWriterDelegate
        Throws:
        javax.xml.stream.XMLStreamException
      • writeStartElement

        public void writeStartElement​(java.lang.String localName)
                               throws javax.xml.stream.XMLStreamException
        Specified by:
        writeStartElement in interface javax.xml.stream.XMLStreamWriter
        Overrides:
        writeStartElement in class StreamWriterDelegate
        Throws:
        javax.xml.stream.XMLStreamException
      • writeStartElement

        public void writeStartElement​(java.lang.String namespaceURI,
                                      java.lang.String localName)
                               throws javax.xml.stream.XMLStreamException
        Specified by:
        writeStartElement in interface javax.xml.stream.XMLStreamWriter
        Overrides:
        writeStartElement in class StreamWriterDelegate
        Throws:
        javax.xml.stream.XMLStreamException
      • writeStartElement

        public void writeStartElement​(java.lang.String prefix,
                                      java.lang.String localName,
                                      java.lang.String namespaceURI)
                               throws javax.xml.stream.XMLStreamException
        Specified by:
        writeStartElement in interface javax.xml.stream.XMLStreamWriter
        Overrides:
        writeStartElement in class StreamWriterDelegate
        Throws:
        javax.xml.stream.XMLStreamException
      • writeCharacters

        public void writeCharacters​(java.lang.String text)
                             throws javax.xml.stream.XMLStreamException
        Specified by:
        writeCharacters in interface javax.xml.stream.XMLStreamWriter
        Overrides:
        writeCharacters in class StreamWriterDelegate
        Throws:
        javax.xml.stream.XMLStreamException
      • writeCharacters

        public void writeCharacters​(char[] text,
                                    int start,
                                    int len)
                             throws javax.xml.stream.XMLStreamException
        Specified by:
        writeCharacters in interface javax.xml.stream.XMLStreamWriter
        Overrides:
        writeCharacters in class StreamWriterDelegate
        Throws:
        javax.xml.stream.XMLStreamException
      • writeCData

        public void writeCData​(java.lang.String data)
                        throws javax.xml.stream.XMLStreamException
        Specified by:
        writeCData in interface javax.xml.stream.XMLStreamWriter
        Overrides:
        writeCData in class StreamWriterDelegate
        Throws:
        javax.xml.stream.XMLStreamException
      • writeEntityRef

        public void writeEntityRef​(java.lang.String name)
                            throws javax.xml.stream.XMLStreamException
        Specified by:
        writeEntityRef in interface javax.xml.stream.XMLStreamWriter
        Overrides:
        writeEntityRef in class StreamWriterDelegate
        Throws:
        javax.xml.stream.XMLStreamException
      • writeEndElement

        public void writeEndElement()
                             throws javax.xml.stream.XMLStreamException
        Specified by:
        writeEndElement in interface javax.xml.stream.XMLStreamWriter
        Overrides:
        writeEndElement in class StreamWriterDelegate
        Throws:
        javax.xml.stream.XMLStreamException
      • writeEndDocument

        public void writeEndDocument()
                              throws javax.xml.stream.XMLStreamException
        Specified by:
        writeEndDocument in interface javax.xml.stream.XMLStreamWriter
        Overrides:
        writeEndDocument in class StreamWriterDelegate
        Throws:
        javax.xml.stream.XMLStreamException
      • beforeMarkup

        protected void beforeMarkup()
                             throws javax.xml.stream.XMLStreamException
        Throws:
        javax.xml.stream.XMLStreamException
      • afterMarkup

        protected void afterMarkup()
      • afterData

        protected void afterData()
      • beforeStartElement

        protected void beforeStartElement()
                                   throws javax.xml.stream.XMLStreamException
        Throws:
        javax.xml.stream.XMLStreamException
      • afterStartElement

        protected void afterStartElement()
      • beforeEndElement

        protected void beforeEndElement()
      • afterEndElement

        protected void afterEndElement()
      • afterEndDocument

        protected void afterEndDocument()
      • writeNewLine

        protected void writeNewLine​(int indentation)
                             throws javax.xml.stream.XMLStreamException
        Write a line separator followed by indentation.
        Parameters:
        indentation - indent level
        Throws:
        javax.xml.stream.XMLStreamException - if XML stream can not be processed