Class GenericXMLWriter

  • All Implemented Interfaces:
    IExtensibleWriter, IXMLWriter

    public class GenericXMLWriter
    extends XMLWriterBase
    Generic handler for marshalling text document to a writer. This is the most general output handler since it can be used with any character encoding and and output writer.
    Author:
    Dennis M. Sosnoski
    • Field Detail

      • m_writer

        private java.io.Writer m_writer
        Writer for text output.
      • m_escaper

        private ICharacterEscaper m_escaper
        Escaper for character data content output.
      • m_indent

        private boolean m_indent
        Indent tags for pretty-printed text.
      • m_indentBase

        private int m_indentBase
        Base number of characters in indent sequence (end of line only).
      • m_indentPerLevel

        private int m_indentPerLevel
        Number of extra characters in indent sequence per level of nesting.
      • m_indentSequence

        private char[] m_indentSequence
        Raw text for indentation sequences.
    • Constructor Detail

      • GenericXMLWriter

        public GenericXMLWriter​(java.lang.String[] uris)
        Constructor.
        Parameters:
        uris - ordered array of URIs for namespaces used in document (must be constant; the value in position 0 must always be the empty string "", and the value in position 1 must always be the XML namespace "http://www.w3.org/XML/1998/namespace")
      • GenericXMLWriter

        public GenericXMLWriter​(GenericXMLWriter base,
                                java.lang.String[] uris)
        Copy constructor. This takes the writer from a supplied instance, while setting a new array of namespace URIs. It's intended for use when invoking one binding from within another binding.
        Parameters:
        base - instance to be used as base for writer
        uris - ordered array of URIs for namespaces used in document (see GenericXMLWriter(String[]))
    • Method Detail

      • setOutput

        public void setOutput​(java.io.Writer outw,
                              ICharacterEscaper escaper)
        Set output writer and escaper. If an output writer is currently open when this is called the existing writer is flushed and closed, with any errors ignored.
        Parameters:
        outw - writer for document data output
        escaper - character escaper for chosen encoding
      • setIndentSpaces

        public void setIndentSpaces​(int count,
                                    java.lang.String newline,
                                    char indent)
        Set nesting indentation. This is advisory only, and implementations of this interface are free to ignore it. The intent is to indicate that the generated output should use indenting to illustrate element nesting.
        Parameters:
        count - number of character to indent per level, or disable indentation if negative (zero means new line only)
        newline - sequence of characters used for a line ending (null means use the single character '\n')
        indent - whitespace character used for indentation
      • writeMarkup

        protected void writeMarkup​(java.lang.String text)
                            throws java.io.IOException
        Write markup text to output. Markup text can be written directly to the output without the need for any escaping.
        Specified by:
        writeMarkup in class XMLWriterBase
        Parameters:
        text - markup text to be written
        Throws:
        java.io.IOException - if error writing to document
      • writeMarkup

        protected void writeMarkup​(char chr)
                            throws java.io.IOException
        Write markup character to output. Markup text can be written directly to the output without the need for any escaping.
        Specified by:
        writeMarkup in class XMLWriterBase
        Parameters:
        chr - markup character to be written
        Throws:
        java.io.IOException - if error writing to document
      • defineNamespace

        protected void defineNamespace​(int index,
                                       java.lang.String prefix)
        Report that namespace has been defined.
        Specified by:
        defineNamespace in class XMLWriterNamespaceBase
        Parameters:
        index - post-translation namespace URI index number
        prefix - prefix used for namespace
      • undefineNamespace

        protected void undefineNamespace​(int index)
        Report that namespace has been undefined.
        Specified by:
        undefineNamespace in class XMLWriterNamespaceBase
        Parameters:
        index - post-translation namespace URI index number
      • writePrefix

        protected void writePrefix​(int index)
                            throws java.io.IOException
        Write namespace prefix to output. This internal method is used to handle translation of namespace indexes to internal form, and also to throw an exception when an undeclared prefix is used.
        Specified by:
        writePrefix in class XMLWriterBase
        Parameters:
        index - namespace URI index number
        Throws:
        java.io.IOException - if error writing to document
      • writeAttributeText

        protected void writeAttributeText​(java.lang.String text)
                                   throws java.io.IOException
        Write attribute text to output. This needs to write the text with any appropriate escaping.
        Specified by:
        writeAttributeText in class XMLWriterBase
        Parameters:
        text - attribute value text to be written
        Throws:
        java.io.IOException - if error writing to document
      • writeTextContent

        public void writeTextContent​(java.lang.String text)
                              throws java.io.IOException
        Write ordinary character data text content to document. This needs to write the text with any appropriate escaping.
        Parameters:
        text - content value text
        Throws:
        java.io.IOException - on error writing to document
      • writeCData

        public void writeCData​(java.lang.String text)
                        throws java.io.IOException
        Write CDATA text to document. This needs to write the text with any appropriate escaping.
        Parameters:
        text - content value text
        Throws:
        java.io.IOException - on error writing to document
      • indent

        public void indent​(int bias)
                    throws java.io.IOException
        Request output indent. Output the line end sequence followed by the appropriate number of indent characters.
        Specified by:
        indent in class XMLWriterBase
        Parameters:
        bias - indent depth difference (positive or negative) from current element nesting depth
        Throws:
        java.io.IOException - on error writing to document
      • indent

        public void indent()
                    throws java.io.IOException
        Request output indent. Output the line end sequence followed by the appropriate number of indent characters for the current nesting level.
        Throws:
        java.io.IOException - on error writing to document
      • flush

        public void flush()
                   throws java.io.IOException
        Flush document output. Forces out all output generated to this point.
        Specified by:
        flush in interface IXMLWriter
        Specified by:
        flush in class XMLWriterBase
        Throws:
        java.io.IOException - on error writing to document
      • close

        public void close()
                   throws java.io.IOException
        Close document output. Completes writing of document output, including closing the output medium.
        Specified by:
        close in interface IXMLWriter
        Specified by:
        close in class XMLWriterBase
        Throws:
        java.io.IOException - on error writing to document
      • createChildWriter

        public IXMLWriter createChildWriter​(java.lang.String[] uris)
        Create a child writer instance to be used for a separate binding. The child writer inherits the stream and encoding from this writer, while using the supplied namespace URIs.
        Parameters:
        uris - ordered array of URIs for namespaces used in document (see GenericXMLWriter(String[]))
        Returns:
        child writer