Class XMLWriterBase

    • Field Detail

      • m_textSeen

        private boolean m_textSeen
        Flag for current element has text content.
      • m_contentSeen

        private boolean m_contentSeen
        Flag for current element has content.
      • m_afterFirst

        private boolean m_afterFirst
        Flag for first write done (used to skip indentation before first element).
    • Constructor Detail

      • XMLWriterBase

        public XMLWriterBase​(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")
      • XMLWriterBase

        public XMLWriterBase​(XMLWriterBase base,
                             java.lang.String[] uris)
        Copy constructor. This initializes the extension namespace information from an existing instance.
        Parameters:
        base - existing instance
        uris - ordered array of URIs for namespaces used in document
    • Method Detail

      • writeMarkup

        protected abstract 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, but still needs to be properly encoded.
        Parameters:
        text - markup text to be written
        Throws:
        java.io.IOException - if error writing to document
      • writeMarkup

        protected abstract 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, but still needs to be properly encoded.
        Parameters:
        chr - markup character to be written
        Throws:
        java.io.IOException - if error writing to document
      • writePrefix

        protected abstract void writePrefix​(int index)
                                     throws java.io.IOException
        Write namespace prefix to output. This internal method is used to throw an exception when an undeclared prefix is used.
        Parameters:
        index - namespace URI index number
        Throws:
        java.io.IOException - if error writing to document
      • writeAttributeText

        protected abstract 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.
        Parameters:
        text - attribute value text to be written
        Throws:
        java.io.IOException - if error writing to document
      • indent

        protected abstract void indent​(int bias)
                                throws java.io.IOException
        Request output indent with bias from current element nesting level. This is used internally for proper indenting in special cases.
        Throws:
        java.io.IOException - on error writing to document
      • flagContent

        protected final void flagContent()
                                  throws java.io.IOException
        Set up for writing any content to element. If the start tag for the element has not been closed, this will close it.
        Throws:
        java.io.IOException - on error writing to document
      • flagTextContent

        protected final void flagTextContent()
                                      throws java.io.IOException
        Set up for writing text content to element. If the start tag for the element has not been closed, this will close it.
        Throws:
        java.io.IOException - on error writing to document
      • init

        public void init()
        Initialize writer.
        Specified by:
        init in interface IXMLWriter
      • writeXMLDecl

        public void writeXMLDecl​(java.lang.String version,
                                 java.lang.String encoding,
                                 java.lang.String standalone)
                          throws java.io.IOException
        Write XML declaration to document. This can only be called before any other methods in the interface are called.
        Specified by:
        writeXMLDecl in interface IXMLWriter
        Parameters:
        version - XML version text
        encoding - text for encoding attribute (unspecified if null)
        standalone - text for standalone attribute (unspecified if null)
        Throws:
        java.io.IOException - on error writing to document
      • startTagOpen

        public void startTagOpen​(int index,
                                 java.lang.String name)
                          throws java.io.IOException
        Generate open start tag. This allows attributes to be added to the start tag, but must be followed by a closeStartTag() call.
        Specified by:
        startTagOpen in interface IXMLWriter
        Parameters:
        index - namespace URI index number
        name - unqualified element name
        Throws:
        java.io.IOException - on error writing to document
      • startTagNamespaces

        public void startTagNamespaces​(int index,
                                       java.lang.String name,
                                       int[] nums,
                                       java.lang.String[] prefs)
                                throws java.io.IOException
        Generate start tag for element with namespaces. This creates the actual start tag, along with any necessary namespace declarations. Previously active namespace declarations are not duplicated. The tag is left incomplete, allowing other attributes to be added.
        Specified by:
        startTagNamespaces in interface IXMLWriter
        Parameters:
        index - namespace URI index number
        name - element name
        nums - array of namespace indexes defined by this element (must be constant, reference is kept until end of element)
        prefs - array of namespace prefixes mapped by this element (no null values, use "" for default namespace declaration)
        Throws:
        java.io.IOException - on error writing to document
      • closeStartTag

        public void closeStartTag()
                           throws java.io.IOException
        Close the current open start tag. This is only valid after a call to startTagOpen(int, java.lang.String).
        Specified by:
        closeStartTag in interface IXMLWriter
        Throws:
        java.io.IOException - on error writing to document
      • closeEmptyTag

        public void closeEmptyTag()
                           throws java.io.IOException
        Close the current open start tag as an empty element. This is only valid after a call to startTagOpen(int, java.lang.String).
        Specified by:
        closeEmptyTag in interface IXMLWriter
        Throws:
        java.io.IOException - on error writing to document
      • indentAfterFirst

        private void indentAfterFirst()
                               throws java.io.IOException
        Conditionally indent output only if not the first write. This is used both to track the output state (useful to check that the XML declaration is only written at the start of the document) and to avoid an initial blank line in the case where an XML declaration is not written.
        Throws:
        java.io.IOException - on write error
      • startTagClosed

        public void startTagClosed​(int index,
                                   java.lang.String name)
                            throws java.io.IOException
        Generate closed start tag. No attributes or namespaces can be added to a start tag written using this call.
        Specified by:
        startTagClosed in interface IXMLWriter
        Parameters:
        index - namespace URI index number
        name - unqualified element name
        Throws:
        java.io.IOException - on error writing to document
      • endTag

        public void endTag​(int index,
                           java.lang.String name)
                    throws java.io.IOException
        Generate end tag.
        Specified by:
        endTag in interface IXMLWriter
        Parameters:
        index - namespace URI index number
        name - unqualified element name
        Throws:
        java.io.IOException - on error writing to document
      • writeComment

        public void writeComment​(java.lang.String text)
                          throws java.io.IOException
        Write comment to document.
        Specified by:
        writeComment in interface IXMLWriter
        Parameters:
        text - comment text
        Throws:
        java.io.IOException - on error writing to document
      • writeEntityRef

        public void writeEntityRef​(java.lang.String name)
                            throws java.io.IOException
        Write entity reference to document.
        Specified by:
        writeEntityRef in interface IXMLWriter
        Parameters:
        name - entity name
        Throws:
        java.io.IOException - on error writing to document
      • writeDocType

        public void writeDocType​(java.lang.String name,
                                 java.lang.String sys,
                                 java.lang.String pub,
                                 java.lang.String subset)
                          throws java.io.IOException
        Write DOCTYPE declaration to document.
        Specified by:
        writeDocType in interface IXMLWriter
        Parameters:
        name - root element name
        sys - system ID (null if none, must be non-null for public ID to be used)
        pub - public ID (null if none)
        subset - internal subset (null if none)
        Throws:
        java.io.IOException - on error writing to document
      • writePI

        public void writePI​(java.lang.String target,
                            java.lang.String data)
                     throws java.io.IOException
        Write processing instruction to document.
        Specified by:
        writePI in interface IXMLWriter
        Parameters:
        target - processing instruction target name
        data - processing instruction data
        Throws:
        java.io.IOException - on error writing to document
      • flush

        public abstract void flush()
                            throws java.io.IOException
        Flush document output. Subclasses must implement this method to force all buffered output to be written. To assure proper handling of an open start tag they should first call flagContent().
        Specified by:
        flush in interface IXMLWriter
        Throws:
        java.io.IOException - on error writing to document
      • close

        public abstract 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
        Throws:
        java.io.IOException - on error writing to document
      • reset

        public void reset()
        Reset to initial state for reuse. The writer is serially reusable, as long as this method is called to clear any retained state information between uses. It is automatically called when output is set.
        Specified by:
        reset in interface IXMLWriter
        Overrides:
        reset in class XMLWriterNamespaceBase