public class XMLWriter<E extends java.lang.Enum<E>,A extends java.lang.Enum<A>> extends java.lang.Object implements java.io.Closeable
Modifier and Type | Field and Description |
---|---|
protected IXMLResolver<E,A> |
xmlResolver
Resolver used by the writer.
|
Constructor and Description |
---|
XMLWriter(java.io.OutputStream stream,
IXMLResolver<E,A> xmlResolver)
Create a new writer.
|
XMLWriter(java.io.PrintWriter writer,
IXMLResolver<E,A> xmlResolver)
Create a new writer.
|
Modifier and Type | Method and Description |
---|---|
void |
addAttribute(A attribute,
java.lang.Object value)
Add a attribute.
|
void |
addCDataSection(java.lang.String cdata)
Add CDATA section.
|
void |
addClosedElement(E element,
java.lang.Object... attributes)
Convenience method for adding an element together with (some of) its
attributes.
|
void |
addClosedTextElement(E element,
java.lang.String text,
java.lang.Object... attributes)
Convenience method for adding an element together with (some of) its
attributes and text inbetween.
|
void |
addComment(java.lang.String text)
Add an XML comment.
|
void |
addExternalAttribute(java.lang.String attributeName,
java.lang.Object value)
Adds an external attribute, i.e.
|
void |
addHeader(java.lang.String version,
java.lang.String encoding)
Add an XML header.
|
void |
addHTML5Doctype()
Add the HTML5 doctype, which is different from normal XML/HTML doctypes in
that it is much shorter and does not contain any public or system IDs.
|
void |
addNewLine()
Add new line.
|
void |
addPublicDocTypeDefintion(E rootElement,
java.lang.String publicId,
java.lang.String systemId)
Add public document type definiton
|
protected void |
addRawString(java.lang.String text)
Adds the given text unprocessed to the writer.
|
void |
addText(java.lang.String text)
Add a text element to an element.
|
void |
close()
Close the writer.
|
void |
closeElement(E element)
Close an element.
|
static java.lang.String |
escape(java.lang.String text)
Escape text for XML.
|
void |
flush()
Flushes the underlying writer.
|
protected E |
getCurrentElement()
Returns the element we are currently in.
|
protected java.io.PrintWriter |
getWriter()
Get writer this writer writes to.
|
void |
openElement(E element)
Start a new element
|
void |
openElement(E element,
java.lang.Object... attributes)
Convenience method for adding an element together with (some of) its
attributes.
|
void |
setSuppressLineBreaks(boolean supressLineBreaks)
Toogle line break behavior.
|
protected final IXMLResolver<E extends java.lang.Enum<E>,A extends java.lang.Enum<A>> xmlResolver
public XMLWriter(java.io.OutputStream stream, IXMLResolver<E,A> xmlResolver)
stream
- the stream to write to.xmlResolver
- resolvers used by this writerpublic XMLWriter(java.io.PrintWriter writer, IXMLResolver<E,A> xmlResolver)
writer
- the writer to write to.xmlResolver
- resolvers used by this writerpublic void setSuppressLineBreaks(boolean supressLineBreaks)
true
the writer does not
write line breaks. If set to false
(default) line breaks are
written.
This can, for example, be used for HTML where line breaks sometimes change the layout.
public void addHeader(java.lang.String version, java.lang.String encoding)
version
- version stringencoding
- encoding definitionpublic void addPublicDocTypeDefintion(E rootElement, java.lang.String publicId, java.lang.String systemId)
rootElement
- root elementpublicId
- public idsystemId
- sytem idpublic void addHTML5Doctype()
public void openElement(E element)
element
- the element to start.public void addAttribute(A attribute, java.lang.Object value)
attribute
- the attribute to createvalue
- its valueXMLWriterException
- if there's no element to add attributes to (
EXMLWriterExceptionType.ATTRIBUTE_OUTSIDE_ELEMENT
) or if
an attribute is added twice (
EXMLWriterExceptionType.DUPLICATE_ATTRIBUTE
).public void addExternalAttribute(java.lang.String attributeName, java.lang.Object value)
public void openElement(E element, java.lang.Object... attributes)
element
- The element to be opened (using openElement(Enum)
).attributes
- the attributes to be added. The number of arguments must be even,
where the first, third, etc. argument is an attribute enum.public void addClosedElement(E element, java.lang.Object... attributes)
openElement(Enum, Object[])
, but
also closes the element.public void addClosedTextElement(E element, java.lang.String text, java.lang.Object... attributes)
openElement(Enum, Object[])
, but then adds the provided text and
closes the element.public void closeElement(E element)
element
- the element to close.XMLWriterException
- on attempt to close the wrong element (
EXMLWriterExceptionType.UNCLOSED_ELEMENT
).public void addText(java.lang.String text)
text
- the text to add.public void addCDataSection(java.lang.String cdata)
XMLWriterException
- If the added text contains the CDATA closing tag
]]>
. This is not automatically escaped as some
parsers do not automatically unescape it when reading.public void addComment(java.lang.String text)
text
- comment text.public void addNewLine()
public void close()
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
XMLWriterException
- if there is a remaining open element.public void flush()
protected void addRawString(java.lang.String text)
protected java.io.PrintWriter getWriter()
protected E getCurrentElement()
java.util.EmptyStackException
- if there is no unclosed element.public static java.lang.String escape(java.lang.String text)
null
value.