Class EncodingXmlWriter

  • Direct Known Subclasses:
    AsciiXmlWriter, ISOLatin1XmlWriter

    public abstract class EncodingXmlWriter
    extends XmlWriter
    Intermediate base class used when outputting to streams that use an encoding that is compatible with 7-bit single-byte Ascii encoding. That means it can be used for UTF-8, ISO-Latin1 and pure Ascii.

    Implementation notes:

    Parts of surrogate handling are implemented here in the base class: storage for the first part of a split surrogate (only possible when character content is output split in multiple calls) is within base class. Also, simple checks for unmatched surrogate pairs are in writeAscii method, since it is the most convenient place to catch cases where a text segment ends with an unmatched surrogate pair half.

    • Constructor Detail

      • EncodingXmlWriter

        public EncodingXmlWriter​(java.io.OutputStream out,
                                 WriterConfig cfg,
                                 java.lang.String encoding,
                                 boolean autoclose)
                          throws java.io.IOException
        Throws:
        java.io.IOException
    • Method Detail

      • getOutputPtr

        protected int getOutputPtr()
        This method is needed by the super class, to calculate hard byte/char offsets.
        Specified by:
        getOutputPtr in class XmlWriter
      • getOutputStream

        protected final java.io.OutputStream getOutputStream()
        Specified by:
        getOutputStream in class XmlWriter
        Returns:
        Underlying OutputStream used for physical output, if the writer was constructed using one
      • getWriter

        protected final java.io.Writer getWriter()
        Specified by:
        getWriter in class XmlWriter
        Returns:
        Underlying Writer used for physical output, if the writer was constructed with one, or one was created to be used with an OutputStream.
      • close

        public void close​(boolean forceRealClose)
                   throws java.io.IOException
        Description copied from class: XmlWriter
        Method called to flush the buffer(s), and close the output sink (stream or writer) if enabled (auto-closing) or forced.
        Specified by:
        close in class XmlWriter
        Throws:
        java.io.IOException
      • flush

        public final void flush()
                         throws java.io.IOException
        Specified by:
        flush in class XmlWriter
        Throws:
        java.io.IOException
      • writeRaw

        public abstract void writeRaw​(char[] cbuf,
                                      int offset,
                                      int len)
                               throws java.io.IOException
        Specified by:
        writeRaw in class XmlWriter
        Throws:
        java.io.IOException
      • writeRaw

        public abstract void writeRaw​(java.lang.String str,
                                      int offset,
                                      int len)
                               throws java.io.IOException
        Specified by:
        writeRaw in class XmlWriter
        Throws:
        java.io.IOException
      • writeCDataStart

        public final void writeCDataStart()
                                   throws java.io.IOException
        Specified by:
        writeCDataStart in class XmlWriter
        Throws:
        java.io.IOException
      • writeCDataEnd

        public final void writeCDataEnd()
                                 throws java.io.IOException
        Specified by:
        writeCDataEnd in class XmlWriter
        Throws:
        java.io.IOException
      • writeCommentStart

        public final void writeCommentStart()
                                     throws java.io.IOException
        Specified by:
        writeCommentStart in class XmlWriter
        Throws:
        java.io.IOException
      • writeCommentEnd

        public final void writeCommentEnd()
                                   throws java.io.IOException
        Specified by:
        writeCommentEnd in class XmlWriter
        Throws:
        java.io.IOException
      • writePIStart

        public final void writePIStart​(java.lang.String target,
                                       boolean addSpace)
                                throws java.io.IOException
        Specified by:
        writePIStart in class XmlWriter
        Throws:
        java.io.IOException
      • writePIEnd

        public final void writePIEnd()
                              throws java.io.IOException
        Specified by:
        writePIEnd in class XmlWriter
        Throws:
        java.io.IOException
      • writeCData

        public int writeCData​(java.lang.String data)
                       throws java.io.IOException
        Specified by:
        writeCData in class XmlWriter
        Parameters:
        data - Contents of the CDATA section to write out
        Returns:
        offset of the (first) illegal content segment ("]]>") in passed content and not in repairing mode; or -1 if none or is repairing
        Throws:
        java.io.IOException
      • writeCData

        public int writeCData​(char[] cbuf,
                              int offset,
                              int len)
                       throws java.io.IOException
        Specified by:
        writeCData in class XmlWriter
        Throws:
        java.io.IOException
      • writeCharacters

        public final void writeCharacters​(java.lang.String data)
                                   throws java.io.IOException
        Specified by:
        writeCharacters in class XmlWriter
        Throws:
        java.io.IOException
      • writeCharacters

        public final void writeCharacters​(char[] cbuf,
                                          int offset,
                                          int len)
                                   throws java.io.IOException
        Specified by:
        writeCharacters in class XmlWriter
        Throws:
        java.io.IOException
      • writeComment

        public int writeComment​(java.lang.String data)
                         throws java.io.IOException
        Method that will try to output the content as specified. If the content passed in has embedded "--" in it, it will either add an intervening space between consequtive hyphens (if content fixing is enabled), or return the offset of the first hyphen in multi-hyphen sequence.
        Specified by:
        writeComment in class XmlWriter
        Throws:
        java.io.IOException
      • writeDTD

        public void writeDTD​(java.lang.String data)
                      throws java.io.IOException
        Description copied from class: XmlWriter
        Older "legacy" output method for outputting DOCTYPE declaration. Assumes that the passed-in String contains a complete DOCTYPE declaration properly quoted.
        Specified by:
        writeDTD in class XmlWriter
        Throws:
        java.io.IOException
      • writeDTD

        public void writeDTD​(java.lang.String rootName,
                             java.lang.String systemId,
                             java.lang.String publicId,
                             java.lang.String internalSubset)
                      throws java.io.IOException,
                             javax.xml.stream.XMLStreamException
        Specified by:
        writeDTD in class XmlWriter
        Throws:
        java.io.IOException
        javax.xml.stream.XMLStreamException
      • writeEntityReference

        public void writeEntityReference​(java.lang.String name)
                                  throws java.io.IOException,
                                         javax.xml.stream.XMLStreamException
        Specified by:
        writeEntityReference in class XmlWriter
        Throws:
        java.io.IOException
        javax.xml.stream.XMLStreamException
      • writeXmlDeclaration

        public void writeXmlDeclaration​(java.lang.String version,
                                        java.lang.String encoding,
                                        java.lang.String standalone)
                                 throws java.io.IOException
        Specified by:
        writeXmlDeclaration in class XmlWriter
        Throws:
        java.io.IOException
      • writePI

        public int writePI​(java.lang.String target,
                           java.lang.String data)
                    throws java.io.IOException,
                           javax.xml.stream.XMLStreamException
        Specified by:
        writePI in class XmlWriter
        Throws:
        java.io.IOException
        javax.xml.stream.XMLStreamException
      • writeStartTagStart

        public void writeStartTagStart​(java.lang.String localName)
                                throws java.io.IOException,
                                       javax.xml.stream.XMLStreamException
        Description copied from class: XmlWriter

        Note: can throw XMLStreamException, if name checking is enabled, and name is invalid (name check has to be in this writer, not caller, since it depends not only on xml limitations, but also on encoding limitations)

        Specified by:
        writeStartTagStart in class XmlWriter
        Throws:
        java.io.IOException
        javax.xml.stream.XMLStreamException
      • writeStartTagStart

        public void writeStartTagStart​(java.lang.String prefix,
                                       java.lang.String localName)
                                throws java.io.IOException,
                                       javax.xml.stream.XMLStreamException
        Description copied from class: XmlWriter

        Note: can throw XMLStreamException, if name checking is enabled, and name is invalid (name check has to be in this writer, not caller, since it depends not only on xml limitations, but also on encoding limitations)

        Specified by:
        writeStartTagStart in class XmlWriter
        Throws:
        java.io.IOException
        javax.xml.stream.XMLStreamException
      • writeStartTagEnd

        public void writeStartTagEnd()
                              throws java.io.IOException
        Specified by:
        writeStartTagEnd in class XmlWriter
        Throws:
        java.io.IOException
      • writeStartTagEmptyEnd

        public void writeStartTagEmptyEnd()
                                   throws java.io.IOException
        Specified by:
        writeStartTagEmptyEnd in class XmlWriter
        Throws:
        java.io.IOException
      • writeEndTag

        public void writeEndTag​(java.lang.String localName)
                         throws java.io.IOException
        Specified by:
        writeEndTag in class XmlWriter
        Throws:
        java.io.IOException
      • writeEndTag

        public void writeEndTag​(java.lang.String prefix,
                                java.lang.String localName)
                         throws java.io.IOException
        Specified by:
        writeEndTag in class XmlWriter
        Throws:
        java.io.IOException
      • writeAttribute

        public void writeAttribute​(java.lang.String localName,
                                   java.lang.String value)
                            throws java.io.IOException,
                                   javax.xml.stream.XMLStreamException
        Description copied from class: XmlWriter

        Note: can throw XMLStreamException, if name checking is enabled, and name is invalid (name check has to be in this writer, not caller, since it depends not only on xml limitations, but also on encoding limitations)

        Specified by:
        writeAttribute in class XmlWriter
        Throws:
        java.io.IOException
        javax.xml.stream.XMLStreamException
      • writeAttribute

        public void writeAttribute​(java.lang.String localName,
                                   char[] value,
                                   int offset,
                                   int len)
                            throws java.io.IOException,
                                   javax.xml.stream.XMLStreamException
        Specified by:
        writeAttribute in class XmlWriter
        Throws:
        java.io.IOException
        javax.xml.stream.XMLStreamException
      • writeAttribute

        public void writeAttribute​(java.lang.String prefix,
                                   java.lang.String localName,
                                   java.lang.String value)
                            throws java.io.IOException,
                                   javax.xml.stream.XMLStreamException
        Description copied from class: XmlWriter

        Note: can throw XMLStreamException, if name checking is enabled, and name is invalid (name check has to be in this writer, not caller, since it depends not only on xml limitations, but also on encoding limitations)

        Specified by:
        writeAttribute in class XmlWriter
        Throws:
        java.io.IOException
        javax.xml.stream.XMLStreamException
      • writeAttribute

        public void writeAttribute​(java.lang.String prefix,
                                   java.lang.String localName,
                                   char[] value,
                                   int offset,
                                   int len)
                            throws java.io.IOException,
                                   javax.xml.stream.XMLStreamException
        Specified by:
        writeAttribute in class XmlWriter
        Throws:
        java.io.IOException
        javax.xml.stream.XMLStreamException
      • writeTypedElement

        public final void writeTypedElement​(org.codehaus.stax2.ri.typed.AsciiValueEncoder enc)
                                     throws java.io.IOException
        Non-validating version of typed write method
        Specified by:
        writeTypedElement in class XmlWriter
        Parameters:
        enc - Encoder that will produce content
        Throws:
        java.io.IOException
      • writeTypedElement

        public final void writeTypedElement​(org.codehaus.stax2.ri.typed.AsciiValueEncoder enc,
                                            org.codehaus.stax2.validation.XMLValidator validator,
                                            char[] copyBuffer)
                                     throws java.io.IOException,
                                            javax.xml.stream.XMLStreamException
        Validating version of typed write method
        Specified by:
        writeTypedElement in class XmlWriter
        Parameters:
        enc - Encoder that will produce content
        validator - Validator to use for validating serialized textual content (can not be null)
        copyBuffer - Temporary buffer that writer can use for temporary copies as necessary
        Throws:
        java.io.IOException
        javax.xml.stream.XMLStreamException
      • writeTypedAttribute

        public void writeTypedAttribute​(java.lang.String localName,
                                        org.codehaus.stax2.ri.typed.AsciiValueEncoder enc)
                                 throws java.io.IOException,
                                        javax.xml.stream.XMLStreamException
        Description copied from class: XmlWriter
        Method similar to XmlWriter.writeAttribute(String,String,char[],int,int) but where is known not to require escaping. No validation needs to be performed.
        Specified by:
        writeTypedAttribute in class XmlWriter
        Throws:
        java.io.IOException
        javax.xml.stream.XMLStreamException
      • writeTypedAttribute

        public void writeTypedAttribute​(java.lang.String prefix,
                                        java.lang.String localName,
                                        org.codehaus.stax2.ri.typed.AsciiValueEncoder enc)
                                 throws java.io.IOException,
                                        javax.xml.stream.XMLStreamException
        Description copied from class: XmlWriter
        Method similar to XmlWriter.writeAttribute(String,String,char[],int,int) but where is known not to require escaping. No validation needs to be performed.
        Specified by:
        writeTypedAttribute in class XmlWriter
        Throws:
        java.io.IOException
        javax.xml.stream.XMLStreamException
      • writeTypedAttribute

        public void writeTypedAttribute​(java.lang.String prefix,
                                        java.lang.String localName,
                                        java.lang.String nsURI,
                                        org.codehaus.stax2.ri.typed.AsciiValueEncoder enc,
                                        org.codehaus.stax2.validation.XMLValidator validator,
                                        char[] copyBuffer)
                                 throws java.io.IOException,
                                        javax.xml.stream.XMLStreamException
        Description copied from class: XmlWriter
        Method similar to XmlWriter.writeAttribute(String,String,char[],int,int) but where is known not to require escaping. Validation of the attribute value must be done by calling given validator appropriately.
        Specified by:
        writeTypedAttribute in class XmlWriter
        Throws:
        java.io.IOException
        javax.xml.stream.XMLStreamException
      • flushBuffer

        protected final void flushBuffer()
                                  throws java.io.IOException
        Throws:
        java.io.IOException
      • writeAscii

        protected final void writeAscii​(byte b)
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • writeAscii

        protected final void writeAscii​(byte b1,
                                        byte b2)
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • writeAscii

        protected final void writeAscii​(java.lang.String str)
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • writeAsEntity

        protected final int writeAsEntity​(int c)
                                   throws java.io.IOException
        Entity writing can be optimized quite nicely, since it only needs to output ascii characters.
        Returns:
        New value of mOutputPtr
        Throws:
        java.io.IOException
      • writeName

        protected final void writeName​(java.lang.String name)
                                throws java.io.IOException,
                                       javax.xml.stream.XMLStreamException
        Throws:
        java.io.IOException
        javax.xml.stream.XMLStreamException
      • writeNameUnchecked

        protected final void writeNameUnchecked​(java.lang.String name)
                                         throws java.io.IOException
        Throws:
        java.io.IOException
      • calcSurrogate

        protected final int calcSurrogate​(int secondSurr)
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • throwUnpairedSurrogate

        protected final void throwUnpairedSurrogate()
                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • throwUnpairedSurrogate

        protected final void throwUnpairedSurrogate​(int code)
                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • writeAttrValue

        protected abstract void writeAttrValue​(java.lang.String data)
                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • writeAttrValue

        protected abstract void writeAttrValue​(char[] value,
                                               int offset,
                                               int len)
                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • writeCDataContent

        protected abstract int writeCDataContent​(java.lang.String data)
                                          throws java.io.IOException
        Throws:
        java.io.IOException
      • writeCDataContent

        protected abstract int writeCDataContent​(char[] cbuf,
                                                 int start,
                                                 int len)
                                          throws java.io.IOException
        Throws:
        java.io.IOException
      • writeCommentContent

        protected abstract int writeCommentContent​(java.lang.String data)
                                            throws java.io.IOException
        Throws:
        java.io.IOException
      • writePIData

        protected abstract int writePIData​(java.lang.String data)
                                    throws java.io.IOException,
                                           javax.xml.stream.XMLStreamException
        Throws:
        java.io.IOException
        javax.xml.stream.XMLStreamException
      • writeTextContent

        protected abstract void writeTextContent​(java.lang.String data)
                                          throws java.io.IOException
        Throws:
        java.io.IOException
      • writeTextContent

        protected abstract void writeTextContent​(char[] cbuf,
                                                 int start,
                                                 int len)
                                          throws java.io.IOException
        Throws:
        java.io.IOException