Class IndentingXMLStreamWriter

  • All Implemented Interfaces:
    Indentation, XMLStreamWriter

    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.