public abstract class XmlWriter
extends java.lang.Object
Note that implementations can have different operating modes:
specifically, when dealing with illegal content (such as "--"
in a comment, "?>"
in processing instruction, or "]]>"
within
CDATA section), implementations can do one of 3 things:
Modifier and Type | Field and Description |
---|---|
protected static char |
DEFAULT_QUOTE_CHAR |
(package private) boolean |
mAddSpaceAfterEmptyElem
Whether to add a space after empty element (before closing "/>")
or not.
|
protected java.io.Writer |
mAttrValueWriter
Optional escaping writer used for escaping characters like '"'
'&' and '<' in attribute values.
|
protected boolean |
mAutoCloseOutput
Flag that defines whether close() on this writer should call
close on the underlying output object (stream, writer)
|
protected boolean |
mCheckContent |
protected boolean |
mCheckNames |
protected boolean |
mCheckStructure |
protected WriterConfig |
mConfig |
protected java.lang.String |
mEncoding |
(package private) boolean |
mEscapeCR
Whether to escape CR (\r) character.
|
protected boolean |
mFixContent |
protected int |
mLocPastChars
Number of characters output prior to currently buffered output
|
protected int |
mLocRowNr |
protected int |
mLocRowStartOffset
Offset of the first character on this line.
|
protected boolean |
mNsAware |
protected XmlWriterWrapper |
mRawWrapper
Lazy-constructed wrapper object, which will route all calls to
Writer API, to matching
writeRaw methods of this
XmlWriter instance. |
protected XmlWriterWrapper |
mTextWrapper
Lazy-constructed wrapper object, which will route all calls to
Writer API, to matching
writeCharacters methods of this
XmlWriter instance. |
protected java.io.Writer |
mTextWriter
Optional escaping writer used for escaping characters like '<'
'&' and '>' in textual content.
|
(package private) boolean |
mUseDoubleQuotesInXmlDecl
Whether to use double quotes in XML declaration or not.
|
protected boolean |
mXml11
Indicates whether output is to be compliant; if false, is to be
xml 1.0 compliant, if true, xml 1.1 compliant.
|
protected static int |
SURR1_FIRST |
protected static int |
SURR1_LAST |
protected static int |
SURR2_FIRST |
protected static int |
SURR2_LAST |
Modifier | Constructor and Description |
---|---|
protected |
XmlWriter(WriterConfig cfg,
java.lang.String encoding,
boolean autoclose) |
Modifier and Type | Method and Description |
---|---|
abstract 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 |
enableXml11() |
abstract void |
flush() |
int |
getAbsOffset() |
int |
getColumn() |
protected abstract int |
getOutputPtr() |
protected abstract java.io.OutputStream |
getOutputStream() |
int |
getRow() |
protected abstract java.io.Writer |
getWriter() |
protected char |
handleInvalidChar(int c)
Method called to handle invalid character in textual content requested
to be output.
|
protected void |
reportNwfContent(java.lang.String msg) |
protected void |
reportNwfName(java.lang.String msg)
This is the method called when an output method call violates
name well-formedness checks
and
WstxOutputProperties.P_OUTPUT_VALIDATE_NAMES is
is enabled. |
protected void |
throwOutputError(java.lang.String msg) |
protected void |
throwOutputError(java.lang.String format,
java.lang.Object arg) |
void |
verifyNameValidity(java.lang.String name,
boolean checkNs)
Method called to verify that the name is a legal XML name.
|
java.io.Writer |
wrapAsRawWriter()
Method that can be called to get a wrapper instance that
can be used to essentially call the
writeRaw
method. |
java.io.Writer |
wrapAsTextWriter() |
abstract void |
writeAttribute(java.lang.String localName,
char[] value,
int offset,
int len) |
abstract 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)
|
abstract void |
writeAttribute(java.lang.String prefix,
java.lang.String localName,
char[] value,
int offset,
int len) |
abstract 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)
|
abstract int |
writeCData(char[] cbuf,
int offset,
int len) |
abstract int |
writeCData(java.lang.String data) |
abstract void |
writeCDataEnd() |
abstract void |
writeCDataStart() |
abstract void |
writeCharacters(char[] cbuf,
int offset,
int len) |
abstract void |
writeCharacters(java.lang.String data) |
abstract int |
writeComment(java.lang.String data)
Method that will try to output the content as specified.
|
abstract void |
writeCommentEnd() |
abstract void |
writeCommentStart() |
abstract void |
writeDTD(java.lang.String data)
Older "legacy" output method for outputting DOCTYPE declaration.
|
abstract void |
writeDTD(java.lang.String rootName,
java.lang.String systemId,
java.lang.String publicId,
java.lang.String internalSubset) |
abstract void |
writeEndTag(java.lang.String localName) |
abstract void |
writeEndTag(java.lang.String prefix,
java.lang.String localName) |
abstract void |
writeEntityReference(java.lang.String name) |
abstract int |
writePI(java.lang.String target,
java.lang.String data) |
abstract void |
writePIEnd() |
abstract void |
writePIStart(java.lang.String target,
boolean addSpace) |
abstract void |
writeRaw(char[] cbuf,
int offset,
int len) |
void |
writeRaw(java.lang.String str) |
abstract void |
writeRaw(java.lang.String str,
int offset,
int len) |
abstract void |
writeRawAscii(char[] cbuf,
int offset,
int len)
Like
writeRaw(java.lang.String, int, int) , but caller guarantees that the contents
additionally are known to be in 7-bit ascii range. |
abstract void |
writeStartTagEmptyEnd() |
abstract void |
writeStartTagEnd() |
abstract 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)
|
abstract 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)
|
abstract void |
writeTypedAttribute(java.lang.String localName,
org.codehaus.stax2.ri.typed.AsciiValueEncoder enc)
Method similar to
writeAttribute(String,String,char[],int,int)
but where is known not to require escaping. |
abstract void |
writeTypedAttribute(java.lang.String prefix,
java.lang.String localName,
org.codehaus.stax2.ri.typed.AsciiValueEncoder enc)
Method similar to
writeAttribute(String,String,char[],int,int)
but where is known not to require escaping. |
abstract 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
writeAttribute(String,String,char[],int,int)
but where is known not to require escaping. |
abstract void |
writeTypedElement(org.codehaus.stax2.ri.typed.AsciiValueEncoder enc)
Like
writeRaw(java.lang.String, int, int) , but caller guarantees that the contents
additionally are known to be in 7-bit ascii range, and also
passes an encoder object that will encode values only when
being handed a buffer to append to. |
abstract void |
writeTypedElement(org.codehaus.stax2.ri.typed.AsciiValueEncoder enc,
org.codehaus.stax2.validation.XMLValidator validator,
char[] copyBuffer)
Like
writeRaw(java.lang.String, int, int) , but caller guarantees that the contents
additionally are known to be in 7-bit ascii range, and also
passes an encoder object that will encode values only when
being handed a buffer to append to. |
abstract void |
writeXmlDeclaration(java.lang.String version,
java.lang.String enc,
java.lang.String standalone) |
protected static final int SURR1_FIRST
protected static final int SURR1_LAST
protected static final int SURR2_FIRST
protected static final int SURR2_LAST
protected static final char DEFAULT_QUOTE_CHAR
protected final WriterConfig mConfig
protected final java.lang.String mEncoding
protected final boolean mNsAware
protected final boolean mCheckStructure
protected final boolean mCheckContent
protected final boolean mCheckNames
protected final boolean mFixContent
final boolean mEscapeCR
final boolean mAddSpaceAfterEmptyElem
final boolean mUseDoubleQuotesInXmlDecl
protected final boolean mAutoCloseOutput
protected java.io.Writer mTextWriter
protected java.io.Writer mAttrValueWriter
protected boolean mXml11
protected XmlWriterWrapper mRawWrapper
writeRaw
methods of this
XmlWriter instance.protected XmlWriterWrapper mTextWrapper
writeCharacters
methods of this
XmlWriter instance.protected int mLocPastChars
protected int mLocRowNr
protected int mLocRowStartOffset
protected XmlWriter(WriterConfig cfg, java.lang.String encoding, boolean autoclose) throws java.io.IOException
java.io.IOException
public void enableXml11()
protected abstract java.io.OutputStream getOutputStream()
protected abstract java.io.Writer getWriter()
public abstract void close(boolean forceRealClose) throws java.io.IOException
java.io.IOException
public abstract void flush() throws java.io.IOException
java.io.IOException
public abstract void writeRaw(java.lang.String str, int offset, int len) throws java.io.IOException
java.io.IOException
public void writeRaw(java.lang.String str) throws java.io.IOException
java.io.IOException
public abstract void writeRaw(char[] cbuf, int offset, int len) throws java.io.IOException
java.io.IOException
public abstract void writeRawAscii(char[] cbuf, int offset, int len) throws java.io.IOException
writeRaw(java.lang.String, int, int)
, but caller guarantees that the contents
additionally are known to be in 7-bit ascii range.java.io.IOException
public abstract void writeCDataStart() throws java.io.IOException
java.io.IOException
public abstract void writeCDataEnd() throws java.io.IOException
java.io.IOException
public abstract void writeCommentStart() throws java.io.IOException
java.io.IOException
public abstract void writeCommentEnd() throws java.io.IOException
java.io.IOException
public abstract void writePIStart(java.lang.String target, boolean addSpace) throws java.io.IOException
java.io.IOException
public abstract void writePIEnd() throws java.io.IOException
java.io.IOException
public abstract int writeCData(java.lang.String data) throws java.io.IOException, javax.xml.stream.XMLStreamException
data
- Contents of the CDATA section to write outjava.io.IOException
javax.xml.stream.XMLStreamException
public abstract int writeCData(char[] cbuf, int offset, int len) throws java.io.IOException, javax.xml.stream.XMLStreamException
java.io.IOException
javax.xml.stream.XMLStreamException
public abstract void writeCharacters(java.lang.String data) throws java.io.IOException
java.io.IOException
public abstract void writeCharacters(char[] cbuf, int offset, int len) throws java.io.IOException
java.io.IOException
public abstract int writeComment(java.lang.String data) throws java.io.IOException, javax.xml.stream.XMLStreamException
java.io.IOException
javax.xml.stream.XMLStreamException
public abstract void writeDTD(java.lang.String data) throws java.io.IOException, javax.xml.stream.XMLStreamException
java.io.IOException
javax.xml.stream.XMLStreamException
public abstract 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
java.io.IOException
javax.xml.stream.XMLStreamException
public abstract void writeEntityReference(java.lang.String name) throws java.io.IOException, javax.xml.stream.XMLStreamException
java.io.IOException
javax.xml.stream.XMLStreamException
public abstract int writePI(java.lang.String target, java.lang.String data) throws java.io.IOException, javax.xml.stream.XMLStreamException
java.io.IOException
javax.xml.stream.XMLStreamException
public abstract void writeXmlDeclaration(java.lang.String version, java.lang.String enc, java.lang.String standalone) throws java.io.IOException
java.io.IOException
public abstract void writeStartTagStart(java.lang.String localName) throws java.io.IOException, javax.xml.stream.XMLStreamException
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)
java.io.IOException
javax.xml.stream.XMLStreamException
public abstract void writeStartTagStart(java.lang.String prefix, java.lang.String localName) throws java.io.IOException, javax.xml.stream.XMLStreamException
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)
java.io.IOException
javax.xml.stream.XMLStreamException
public abstract void writeStartTagEnd() throws java.io.IOException
java.io.IOException
public abstract void writeStartTagEmptyEnd() throws java.io.IOException
java.io.IOException
public abstract void writeEndTag(java.lang.String localName) throws java.io.IOException
java.io.IOException
public abstract void writeEndTag(java.lang.String prefix, java.lang.String localName) throws java.io.IOException
java.io.IOException
public abstract void writeAttribute(java.lang.String localName, java.lang.String value) throws java.io.IOException, javax.xml.stream.XMLStreamException
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)
java.io.IOException
javax.xml.stream.XMLStreamException
public abstract void writeAttribute(java.lang.String localName, char[] value, int offset, int len) throws java.io.IOException, javax.xml.stream.XMLStreamException
java.io.IOException
javax.xml.stream.XMLStreamException
public abstract void writeAttribute(java.lang.String prefix, java.lang.String localName, java.lang.String value) throws java.io.IOException, javax.xml.stream.XMLStreamException
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)
java.io.IOException
javax.xml.stream.XMLStreamException
public abstract void writeAttribute(java.lang.String prefix, java.lang.String localName, char[] value, int offset, int len) throws java.io.IOException, javax.xml.stream.XMLStreamException
java.io.IOException
javax.xml.stream.XMLStreamException
public abstract void writeTypedElement(org.codehaus.stax2.ri.typed.AsciiValueEncoder enc) throws java.io.IOException
writeRaw(java.lang.String, int, int)
, but caller guarantees that the contents
additionally are known to be in 7-bit ascii range, and also
passes an encoder object that will encode values only when
being handed a buffer to append to.enc
- Encoder that will produce contentjava.io.IOException
public abstract 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
writeRaw(java.lang.String, int, int)
, but caller guarantees that the contents
additionally are known to be in 7-bit ascii range, and also
passes an encoder object that will encode values only when
being handed a buffer to append to.enc
- 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.IOException
javax.xml.stream.XMLStreamException
public abstract void writeTypedAttribute(java.lang.String localName, org.codehaus.stax2.ri.typed.AsciiValueEncoder enc) throws java.io.IOException, javax.xml.stream.XMLStreamException
writeAttribute(String,String,char[],int,int)
but where is known not to require escaping.
No validation needs to be performed.java.io.IOException
javax.xml.stream.XMLStreamException
public abstract 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
writeAttribute(String,String,char[],int,int)
but where is known not to require escaping.
No validation needs to be performed.java.io.IOException
javax.xml.stream.XMLStreamException
public abstract 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
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.java.io.IOException
javax.xml.stream.XMLStreamException
protected abstract int getOutputPtr()
public int getRow()
public int getColumn()
public int getAbsOffset()
public final java.io.Writer wrapAsRawWriter()
writeRaw
method.public final java.io.Writer wrapAsTextWriter()
public final void verifyNameValidity(java.lang.String name, boolean checkNs) throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
protected void reportNwfName(java.lang.String msg) throws javax.xml.stream.XMLStreamException
WstxOutputProperties.P_OUTPUT_VALIDATE_NAMES
is
is enabled.javax.xml.stream.XMLStreamException
protected void reportNwfContent(java.lang.String msg) throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
protected void throwOutputError(java.lang.String msg) throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
protected void throwOutputError(java.lang.String format, java.lang.Object arg) throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
protected char handleInvalidChar(int c) throws java.io.IOException
WstxOutputProperties.P_OUTPUT_INVALID_CHAR_HANDLER
.java.io.IOException