public interface XmlSerializer
PLEASE NOTE: This interface will be part of XmlPull 1.2 API. It is included as basis for discussion. It may later change.
Exceptions that may be thrown are: IOException or runtime exception (more runtime exceptions can be thrown but are not declared and as such have no semantics defined for this interface):
NOTE: writing CDSECT, ENTITY_REF, IGNORABLE_WHITESPACE, PROCESSING_INSTRUCTION, COMMENT, and DOCDECL in some implementations may not be supported (for example when serializing to WBXML). In such case IllegalStateException will be thrown and it is recommended to use an optional feature to signal that the implementation does not support this kind of output.
| Modifier and Type | Method and Description |
|---|---|
XmlSerializer |
attribute(java.lang.String namespace,
java.lang.String name,
java.lang.String value)
Writes an attribute.
|
void |
cdsect(java.lang.String text) |
void |
comment(java.lang.String text) |
void |
docdecl(java.lang.String text) |
void |
endDocument()
Finishes writing.
|
XmlSerializer |
endTag(java.lang.String namespace,
java.lang.String name)
Writes end tag.
|
void |
entityRef(java.lang.String text) |
void |
flush()
Writes all pending output to the stream.
|
int |
getDepth()
Returns the current depth of the element.
|
boolean |
getFeature(java.lang.String name)
Returns the current value of the feature with given name.
|
java.lang.String |
getName()
Returns the name of the current element as set by startTag().
|
java.lang.String |
getNamespace()
Returns the namespace URI of the current element as set by startTag().
|
java.lang.String |
getPrefix(java.lang.String namespace,
boolean generatePrefix)
Returns prefix that corresponds to the given namespace.
|
java.lang.Object |
getProperty(java.lang.String name)
Looks up the value of a property.
|
void |
ignorableWhitespace(java.lang.String text) |
void |
processingInstruction(java.lang.String text) |
void |
setFeature(java.lang.String name,
boolean state)
Sets feature identified by name (recommended to be URI for uniqueness).
|
void |
setOutput(java.io.OutputStream os,
java.lang.String encoding)
Sets the use binary output stream with given encoding.
|
void |
setOutput(java.io.Writer writer)
Sets the output to the given writer.
|
void |
setPrefix(java.lang.String prefix,
java.lang.String namespace)
Binds the given prefix to the given namespace.
|
void |
setProperty(java.lang.String name,
java.lang.Object value)
Sets the value of a property.
|
void |
startDocument(java.lang.String encoding,
java.lang.Boolean standalone)
Writes <?xml declaration with encoding (if encoding not null) and standalone flag (if
standalone not null) This method can only be called just after setOutput.
|
XmlSerializer |
startTag(java.lang.String namespace,
java.lang.String name)
Writes a start tag with the given namespace and name.
|
XmlSerializer |
text(char[] buf,
int start,
int len)
Writes text, where special XML chars are automatically escaped
|
XmlSerializer |
text(java.lang.String text)
Writes text, where special XML chars are automatically escaped
|
void setFeature(java.lang.String name,
boolean state)
throws java.lang.IllegalArgumentException,
IllegalStateException
IllegalStateException - If the feature is not supported or cannot be setjava.lang.IllegalArgumentExceptionboolean getFeature(java.lang.String name)
NOTE: unknown properties are always returned as null
name - The name of the feature to be retrieved.java.lang.IllegalArgumentException - if feature string is nullvoid setProperty(java.lang.String name,
java.lang.Object value)
throws java.lang.IllegalArgumentException,
IllegalStateException
IllegalStateException - if the property is not supported or cannot be setjava.lang.IllegalArgumentExceptionjava.lang.Object getProperty(java.lang.String name)
NOTE: unknown properties are
name - The name of the property to be retrieved.void setOutput(java.io.OutputStream os,
java.lang.String encoding)
throws java.io.IOException,
java.lang.IllegalArgumentException,
IllegalStateException
java.io.IOExceptionjava.lang.IllegalArgumentExceptionIllegalStateExceptionvoid setOutput(java.io.Writer writer)
throws java.io.IOException,
java.lang.IllegalArgumentException,
IllegalStateException
WARNING no information about encoding is available!
java.io.IOExceptionjava.lang.IllegalArgumentExceptionIllegalStateExceptionvoid startDocument(java.lang.String encoding,
java.lang.Boolean standalone)
throws java.io.IOException,
java.lang.IllegalArgumentException,
IllegalStateException
java.io.IOExceptionjava.lang.IllegalArgumentExceptionIllegalStateExceptionvoid endDocument()
throws java.io.IOException,
java.lang.IllegalArgumentException,
IllegalStateException
java.io.IOExceptionjava.lang.IllegalArgumentExceptionIllegalStateExceptionvoid setPrefix(java.lang.String prefix,
java.lang.String namespace)
throws java.io.IOException,
java.lang.IllegalArgumentException,
IllegalStateException
xmlns:prefix='namespace' (or xmlns:prefix="namespace" depending what
character is used to quote attribute value).
NOTE: this method MUST be called directly before startTag() and if anything other than startTag() or setPrefix() is called next, an exception will be thrown.
NOTE: prefixes "xml" and "xmlns" are already bound and cannot be redefined see: Namespaces in XML Errata.
NOTE: to set default namespace, use as prefix empty string.
prefix - must be not null (or IllegalArgumentException is thrown)namespace - must be not nulljava.io.IOExceptionjava.lang.IllegalArgumentExceptionIllegalStateExceptionjava.lang.String getPrefix(java.lang.String namespace,
boolean generatePrefix)
throws java.lang.IllegalArgumentException
NOTE: if the prefix is the empty string "" and the default namespace is bound to this prefix, then the empty string ("") is returned.
NOTE: prefixes "xml" and "xmlns" are already bound, and will have values as defined Namespaces in XML specification
java.lang.IllegalArgumentExceptionint getDepth()
<!-- outside --> 0
<root> 1
sometext 1
<foobar> 2
</foobar> 2
</root> 1
<!-- outside --> 0
java.lang.String getNamespace()
NOTE: that notably means that:
java.lang.String getName()
XmlSerializer startTag(java.lang.String namespace, java.lang.String name) throws java.io.IOException, java.lang.IllegalArgumentException, IllegalStateException
java.io.IOExceptionjava.lang.IllegalArgumentExceptionIllegalStateExceptionXmlSerializer attribute(java.lang.String namespace, java.lang.String name, java.lang.String value) throws java.io.IOException, java.lang.IllegalArgumentException, IllegalStateException
java.io.IOExceptionjava.lang.IllegalArgumentExceptionIllegalStateExceptionXmlSerializer endTag(java.lang.String namespace, java.lang.String name) throws java.io.IOException, java.lang.IllegalArgumentException, IllegalStateException
Background: in kXML endTag had no arguments, and non matching tags were very difficult to find... If namespace is null no namespace prefix is printed, only the name is. If namespace is empty string then the serialzier will make sure that the default empty namespace is declared (in XML 1.0 xmlns='').
java.io.IOExceptionjava.lang.IllegalArgumentExceptionIllegalStateExceptionXmlSerializer text(java.lang.String text) throws java.io.IOException, java.lang.IllegalArgumentException, IllegalStateException
java.io.IOExceptionjava.lang.IllegalArgumentExceptionIllegalStateExceptionXmlSerializer text(char[] buf, int start, int len) throws java.io.IOException, java.lang.IllegalArgumentException, IllegalStateException
java.io.IOExceptionjava.lang.IllegalArgumentExceptionIllegalStateExceptionvoid cdsect(java.lang.String text)
throws java.io.IOException,
java.lang.IllegalArgumentException,
IllegalStateException
java.io.IOExceptionjava.lang.IllegalArgumentExceptionIllegalStateExceptionvoid entityRef(java.lang.String text)
throws java.io.IOException,
java.lang.IllegalArgumentException,
IllegalStateException
java.io.IOExceptionjava.lang.IllegalArgumentExceptionIllegalStateExceptionvoid processingInstruction(java.lang.String text)
throws java.io.IOException,
java.lang.IllegalArgumentException,
IllegalStateException
java.io.IOExceptionjava.lang.IllegalArgumentExceptionIllegalStateExceptionvoid comment(java.lang.String text)
throws java.io.IOException,
java.lang.IllegalArgumentException,
IllegalStateException
java.io.IOExceptionjava.lang.IllegalArgumentExceptionIllegalStateExceptionvoid docdecl(java.lang.String text)
throws java.io.IOException,
java.lang.IllegalArgumentException,
IllegalStateException
java.io.IOExceptionjava.lang.IllegalArgumentExceptionIllegalStateExceptionvoid ignorableWhitespace(java.lang.String text)
throws java.io.IOException,
java.lang.IllegalArgumentException,
IllegalStateException
java.io.IOExceptionjava.lang.IllegalArgumentExceptionIllegalStateExceptionvoid flush()
throws java.io.IOException
NOTE: if there is a need to close start tag (so no more attribute() calls are allowed) but without flushing the output call method text() with empty string (text("")).
java.io.IOException