public abstract class EncodingXmlWriter extends XmlWriter
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.
| Modifier and Type | Field and Description |
|---|---|
(package private) static byte |
BYTE_A |
(package private) static byte |
BYTE_AMP |
(package private) static byte |
BYTE_APOS |
(package private) static byte |
BYTE_COLON |
(package private) static byte |
BYTE_EQ |
(package private) static byte |
BYTE_G |
(package private) static byte |
BYTE_GT |
(package private) static byte |
BYTE_HASH |
(package private) static byte |
BYTE_HYPHEN |
(package private) static byte |
BYTE_L |
(package private) static byte |
BYTE_LBRACKET |
(package private) static byte |
BYTE_LT |
(package private) static byte |
BYTE_M |
(package private) static byte |
BYTE_O |
(package private) static byte |
BYTE_P |
(package private) static byte |
BYTE_Q |
(package private) static byte |
BYTE_QMARK |
(package private) static byte |
BYTE_QUOT |
(package private) static byte |
BYTE_RBRACKET |
(package private) static byte |
BYTE_S |
(package private) static byte |
BYTE_SEMICOLON |
(package private) static byte |
BYTE_SLASH |
(package private) static byte |
BYTE_SPACE |
(package private) static byte |
BYTE_T |
(package private) static byte |
BYTE_U |
(package private) static byte |
BYTE_X |
(package private) static int |
DEFAULT_BUFFER_SIZE
Let's use a typical default to have a compromise between large
enough chunks to output, and minimizing memory overhead.
|
private java.io.OutputStream |
mOut
Actual output stream to use for outputting encoded content as
bytes.
|
protected byte[] |
mOutputBuffer |
protected int |
mOutputPtr |
protected int |
mSurrogate
In case a split surrogate pair is output (which can only successfully
occur with either
writeRaw or
writeCharacters), the first part is temporarily stored
within this member variable. |
DEFAULT_QUOTE_CHAR, mAddSpaceAfterEmptyElem, mAttrValueWriter, mAutoCloseOutput, mCheckContent, mCheckNames, mCheckStructure, mConfig, mEncoding, mEscapeCR, mFixContent, mLocPastChars, mLocRowNr, mLocRowStartOffset, mNsAware, mRawWrapper, mTextWrapper, mTextWriter, mUseDoubleQuotesInXmlDecl, mXml11, SURR1_FIRST, SURR1_LAST, SURR2_FIRST, SURR2_LAST| Constructor and Description |
|---|
EncodingXmlWriter(java.io.OutputStream out,
WriterConfig cfg,
java.lang.String encoding,
boolean autoclose) |
| Modifier and Type | Method and Description |
|---|---|
protected int |
calcSurrogate(int secondSurr) |
void |
close(boolean forceRealClose)
Method called to flush the buffer(s), and close the output
sink (stream or writer) if enabled (auto-closing) or
forced.
|
void |
flush() |
protected void |
flushBuffer() |
protected int |
getOutputPtr()
This method is needed by the super class, to calculate hard
byte/char offsets.
|
protected java.io.OutputStream |
getOutputStream() |
protected java.io.Writer |
getWriter() |
protected void |
throwUnpairedSurrogate() |
protected void |
throwUnpairedSurrogate(int code) |
protected void |
writeAscii(byte b) |
protected void |
writeAscii(byte b1,
byte b2) |
protected void |
writeAscii(java.lang.String str) |
protected int |
writeAsEntity(int c)
Entity writing can be optimized quite nicely, since it only
needs to output ascii characters.
|
void |
writeAttribute(java.lang.String localName,
char[] value,
int offset,
int len) |
void |
writeAttribute(java.lang.String localName,
java.lang.String value)
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)
|
void |
writeAttribute(java.lang.String prefix,
java.lang.String localName,
char[] value,
int offset,
int len) |
void |
writeAttribute(java.lang.String prefix,
java.lang.String localName,
java.lang.String value)
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)
|
protected abstract void |
writeAttrValue(char[] value,
int offset,
int len) |
protected abstract void |
writeAttrValue(java.lang.String data) |
int |
writeCData(char[] cbuf,
int offset,
int len) |
int |
writeCData(java.lang.String data) |
protected abstract int |
writeCDataContent(char[] cbuf,
int start,
int len) |
protected abstract int |
writeCDataContent(java.lang.String data) |
void |
writeCDataEnd() |
void |
writeCDataStart() |
void |
writeCharacters(char[] cbuf,
int offset,
int len) |
void |
writeCharacters(java.lang.String data) |
int |
writeComment(java.lang.String data)
Method that will try to output the content as specified.
|
protected abstract int |
writeCommentContent(java.lang.String data) |
void |
writeCommentEnd() |
void |
writeCommentStart() |
void |
writeDTD(java.lang.String data)
Older "legacy" output method for outputting DOCTYPE declaration.
|
void |
writeDTD(java.lang.String rootName,
java.lang.String systemId,
java.lang.String publicId,
java.lang.String internalSubset) |
void |
writeEndTag(java.lang.String localName) |
void |
writeEndTag(java.lang.String prefix,
java.lang.String localName) |
void |
writeEntityReference(java.lang.String name) |
protected void |
writeName(java.lang.String name) |
protected void |
writeNameUnchecked(java.lang.String name) |
int |
writePI(java.lang.String target,
java.lang.String data) |
protected abstract int |
writePIData(java.lang.String data) |
void |
writePIEnd() |
void |
writePIStart(java.lang.String target,
boolean addSpace) |
abstract void |
writeRaw(char[] cbuf,
int offset,
int len) |
abstract void |
writeRaw(java.lang.String str,
int offset,
int len) |
void |
writeRawAscii(char[] buf,
int offset,
int len)
Like
XmlWriter.writeRaw(java.lang.String, int, int), but caller guarantees that the contents
additionally are known to be in 7-bit ascii range. |
void |
writeStartTagEmptyEnd() |
void |
writeStartTagEnd() |
void |
writeStartTagStart(java.lang.String localName)
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)
|
void |
writeStartTagStart(java.lang.String prefix,
java.lang.String localName)
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)
|
protected abstract void |
writeTextContent(char[] cbuf,
int start,
int len) |
protected abstract void |
writeTextContent(java.lang.String data) |
void |
writeTypedAttribute(java.lang.String localName,
org.codehaus.stax2.ri.typed.AsciiValueEncoder enc)
Method similar to
XmlWriter.writeAttribute(String,String,char[],int,int)
but where is known not to require escaping. |
void |
writeTypedAttribute(java.lang.String prefix,
java.lang.String localName,
org.codehaus.stax2.ri.typed.AsciiValueEncoder enc)
Method similar to
XmlWriter.writeAttribute(String,String,char[],int,int)
but where is known not to require escaping. |
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)
Method similar to
XmlWriter.writeAttribute(String,String,char[],int,int)
but where is known not to require escaping. |
void |
writeTypedElement(org.codehaus.stax2.ri.typed.AsciiValueEncoder enc)
Non-validating version of typed write method
|
void |
writeTypedElement(org.codehaus.stax2.ri.typed.AsciiValueEncoder enc,
org.codehaus.stax2.validation.XMLValidator validator,
char[] copyBuffer)
Validating version of typed write method
|
void |
writeXmlDeclaration(java.lang.String version,
java.lang.String encoding,
java.lang.String standalone) |
enableXml11, getAbsOffset, getColumn, getRow, handleInvalidChar, reportNwfContent, reportNwfName, reportNwfName, throwOutputError, throwOutputError, verifyNameValidity, wrapAsRawWriter, wrapAsTextWriter, writeRawstatic final int DEFAULT_BUFFER_SIZE
static final byte BYTE_SPACE
static final byte BYTE_COLON
static final byte BYTE_SEMICOLON
static final byte BYTE_LBRACKET
static final byte BYTE_RBRACKET
static final byte BYTE_QMARK
static final byte BYTE_EQ
static final byte BYTE_SLASH
static final byte BYTE_HASH
static final byte BYTE_HYPHEN
static final byte BYTE_LT
static final byte BYTE_GT
static final byte BYTE_AMP
static final byte BYTE_QUOT
static final byte BYTE_APOS
static final byte BYTE_A
static final byte BYTE_G
static final byte BYTE_L
static final byte BYTE_M
static final byte BYTE_O
static final byte BYTE_P
static final byte BYTE_Q
static final byte BYTE_S
static final byte BYTE_T
static final byte BYTE_U
static final byte BYTE_X
private final java.io.OutputStream mOut
protected byte[] mOutputBuffer
protected int mOutputPtr
protected int mSurrogate
writeRaw or
writeCharacters), the first part is temporarily stored
within this member variable.public EncodingXmlWriter(java.io.OutputStream out,
WriterConfig cfg,
java.lang.String encoding,
boolean autoclose)
throws java.io.IOException
java.io.IOExceptionprotected int getOutputPtr()
getOutputPtr in class XmlWriterprotected final java.io.OutputStream getOutputStream()
getOutputStream in class XmlWriterprotected final java.io.Writer getWriter()
public void close(boolean forceRealClose)
throws java.io.IOException
XmlWriterpublic final void flush()
throws java.io.IOException
public abstract void writeRaw(char[] cbuf,
int offset,
int len)
throws java.io.IOException
public abstract void writeRaw(java.lang.String str,
int offset,
int len)
throws java.io.IOException
public final void writeCDataStart()
throws java.io.IOException
writeCDataStart in class XmlWriterjava.io.IOExceptionpublic final void writeCDataEnd()
throws java.io.IOException
writeCDataEnd in class XmlWriterjava.io.IOExceptionpublic final void writeCommentStart()
throws java.io.IOException
writeCommentStart in class XmlWriterjava.io.IOExceptionpublic final void writeCommentEnd()
throws java.io.IOException
writeCommentEnd in class XmlWriterjava.io.IOExceptionpublic final void writePIStart(java.lang.String target,
boolean addSpace)
throws java.io.IOException
writePIStart in class XmlWriterjava.io.IOExceptionpublic final void writePIEnd()
throws java.io.IOException
writePIEnd in class XmlWriterjava.io.IOExceptionpublic int writeCData(java.lang.String data)
throws java.io.IOException
writeCData in class XmlWriterdata - Contents of the CDATA section to write outjava.io.IOExceptionpublic int writeCData(char[] cbuf,
int offset,
int len)
throws java.io.IOException
writeCData in class XmlWriterjava.io.IOExceptionpublic final void writeCharacters(java.lang.String data)
throws java.io.IOException
writeCharacters in class XmlWriterjava.io.IOExceptionpublic final void writeCharacters(char[] cbuf,
int offset,
int len)
throws java.io.IOException
writeCharacters in class XmlWriterjava.io.IOExceptionpublic int writeComment(java.lang.String data)
throws java.io.IOException
writeComment in class XmlWriterjava.io.IOExceptionpublic void writeDTD(java.lang.String data)
throws java.io.IOException
XmlWriterpublic 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
public void writeEntityReference(java.lang.String name)
throws java.io.IOException,
javax.xml.stream.XMLStreamException
writeEntityReference in class XmlWriterjava.io.IOExceptionjavax.xml.stream.XMLStreamExceptionpublic void writeXmlDeclaration(java.lang.String version,
java.lang.String encoding,
java.lang.String standalone)
throws java.io.IOException
writeXmlDeclaration in class XmlWriterjava.io.IOExceptionpublic int writePI(java.lang.String target,
java.lang.String data)
throws java.io.IOException,
javax.xml.stream.XMLStreamException
public void writeStartTagStart(java.lang.String localName)
throws java.io.IOException,
javax.xml.stream.XMLStreamException
XmlWriterNote: 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)
writeStartTagStart in class XmlWriterjava.io.IOExceptionjavax.xml.stream.XMLStreamExceptionpublic void writeStartTagStart(java.lang.String prefix,
java.lang.String localName)
throws java.io.IOException,
javax.xml.stream.XMLStreamException
XmlWriterNote: 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)
writeStartTagStart in class XmlWriterjava.io.IOExceptionjavax.xml.stream.XMLStreamExceptionpublic void writeStartTagEnd()
throws java.io.IOException
writeStartTagEnd in class XmlWriterjava.io.IOExceptionpublic void writeStartTagEmptyEnd()
throws java.io.IOException
writeStartTagEmptyEnd in class XmlWriterjava.io.IOExceptionpublic void writeEndTag(java.lang.String localName)
throws java.io.IOException
writeEndTag in class XmlWriterjava.io.IOExceptionpublic void writeEndTag(java.lang.String prefix,
java.lang.String localName)
throws java.io.IOException
writeEndTag in class XmlWriterjava.io.IOExceptionpublic void writeAttribute(java.lang.String localName,
java.lang.String value)
throws java.io.IOException,
javax.xml.stream.XMLStreamException
XmlWriterNote: 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)
writeAttribute in class XmlWriterjava.io.IOExceptionjavax.xml.stream.XMLStreamExceptionpublic void writeAttribute(java.lang.String localName,
char[] value,
int offset,
int len)
throws java.io.IOException,
javax.xml.stream.XMLStreamException
writeAttribute in class XmlWriterjava.io.IOExceptionjavax.xml.stream.XMLStreamExceptionpublic void writeAttribute(java.lang.String prefix,
java.lang.String localName,
java.lang.String value)
throws java.io.IOException,
javax.xml.stream.XMLStreamException
XmlWriterNote: 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)
writeAttribute in class XmlWriterjava.io.IOExceptionjavax.xml.stream.XMLStreamExceptionpublic void writeAttribute(java.lang.String prefix,
java.lang.String localName,
char[] value,
int offset,
int len)
throws java.io.IOException,
javax.xml.stream.XMLStreamException
writeAttribute in class XmlWriterjava.io.IOExceptionjavax.xml.stream.XMLStreamExceptionpublic final void writeTypedElement(org.codehaus.stax2.ri.typed.AsciiValueEncoder enc)
throws java.io.IOException
writeTypedElement in class XmlWriterenc - Encoder that will produce contentjava.io.IOExceptionpublic 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
writeTypedElement in class XmlWriterenc - Encoder that will produce contentvalidator - Validator to use for validating serialized textual
content (can not be null)copyBuffer - Temporary buffer that writer can use for temporary
copies as necessaryjava.io.IOExceptionjavax.xml.stream.XMLStreamExceptionpublic void writeTypedAttribute(java.lang.String localName,
org.codehaus.stax2.ri.typed.AsciiValueEncoder enc)
throws java.io.IOException,
javax.xml.stream.XMLStreamException
XmlWriterXmlWriter.writeAttribute(String,String,char[],int,int)
but where is known not to require escaping.
No validation needs to be performed.writeTypedAttribute in class XmlWriterjava.io.IOExceptionjavax.xml.stream.XMLStreamExceptionpublic 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
XmlWriterXmlWriter.writeAttribute(String,String,char[],int,int)
but where is known not to require escaping.
No validation needs to be performed.writeTypedAttribute in class XmlWriterjava.io.IOExceptionjavax.xml.stream.XMLStreamExceptionpublic 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
XmlWriterXmlWriter.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.writeTypedAttribute in class XmlWriterjava.io.IOExceptionjavax.xml.stream.XMLStreamExceptionprotected final void flushBuffer()
throws java.io.IOException
java.io.IOExceptionprotected final void writeAscii(byte b)
throws java.io.IOException
java.io.IOExceptionprotected final void writeAscii(byte b1,
byte b2)
throws java.io.IOException
java.io.IOExceptionprotected final void writeAscii(java.lang.String str)
throws java.io.IOException
java.io.IOExceptionpublic final void writeRawAscii(char[] buf,
int offset,
int len)
throws java.io.IOException
XmlWriterXmlWriter.writeRaw(java.lang.String, int, int), but caller guarantees that the contents
additionally are known to be in 7-bit ascii range.writeRawAscii in class XmlWriterjava.io.IOExceptionprotected final int writeAsEntity(int c)
throws java.io.IOException
mOutputPtrjava.io.IOExceptionprotected final void writeName(java.lang.String name)
throws java.io.IOException,
javax.xml.stream.XMLStreamException
java.io.IOExceptionjavax.xml.stream.XMLStreamExceptionprotected final void writeNameUnchecked(java.lang.String name)
throws java.io.IOException
java.io.IOExceptionprotected final int calcSurrogate(int secondSurr)
throws java.io.IOException
java.io.IOExceptionprotected final void throwUnpairedSurrogate()
throws java.io.IOException
java.io.IOExceptionprotected final void throwUnpairedSurrogate(int code)
throws java.io.IOException
java.io.IOExceptionprotected abstract void writeAttrValue(java.lang.String data)
throws java.io.IOException
java.io.IOExceptionprotected abstract void writeAttrValue(char[] value,
int offset,
int len)
throws java.io.IOException
java.io.IOExceptionprotected abstract int writeCDataContent(java.lang.String data)
throws java.io.IOException
java.io.IOExceptionprotected abstract int writeCDataContent(char[] cbuf,
int start,
int len)
throws java.io.IOException
java.io.IOExceptionprotected abstract int writeCommentContent(java.lang.String data)
throws java.io.IOException
java.io.IOExceptionprotected abstract int writePIData(java.lang.String data)
throws java.io.IOException,
javax.xml.stream.XMLStreamException
java.io.IOExceptionjavax.xml.stream.XMLStreamExceptionprotected abstract void writeTextContent(java.lang.String data)
throws java.io.IOException
java.io.IOExceptionprotected abstract void writeTextContent(char[] cbuf,
int start,
int len)
throws java.io.IOException
java.io.IOException