|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.cdmckay.coffeedom.output.XMLOutputter
public class XMLOutputter
Outputs a CoffeeDOM document as a stream of bytes. The outputter can manage many styles of document formatting, from
untouched to pretty printed. The default is to output the document content exactly as created, but this can be
changed by setting a new Format object. For pretty-print output, use
.
For whitespace-normalized output, use Format.getPrettyFormat()
.
Format.getCompactFormat()
output(...)
methods to print any of the standard CoffeeDOM classes, including
Document and Element, to either a Writer or an OutputStream. Warning: When outputting to a Writer, make sure
the writer's encoding matches the encoding setting in the Format object. This ensures the encoding in which the
content is written (controlled by the Writer configuration) matches the encoding placed in the document's XML
declaration (controlled by the XMLOutputter). Because a Writer cannot be queried for its encoding, the information
must be passed to the Format manually in its constructor or via the Format.setEncoding(String)
method.
The default encoding is UTF-8.
The methods outputString(...)
are for convenience only; for top performance you
should call one of the output(...)
methods and pass in your own Writer or OutputStream
if possible.
XML declarations are always printed on their own line followed by a line seperator (this doesn't change the semantics
of the document). To omit printing of the declaration use Format.setOmitDeclaration(boolean)
. To omit
printing of the encoding in the declaration use Format.setOmitEncoding(boolean)
. Unfortunatly there is
currently no way to know the original encoding of the document.
Empty elements are by default printed as <empty/>, but this can be configured with Format.setExpandEmptyElements(boolean)
to cause them to be expanded to <empty></empty>.
Nested Class Summary | |
---|---|
protected class |
XMLOutputter.NamespaceStack
Our own null subclass of NamespaceStack. |
Field Summary | |
---|---|
protected Format |
currentFormat
|
protected static Format |
preserveFormat
|
Constructor Summary | |
---|---|
XMLOutputter()
This will create an XMLOutputter with the default Format matching Format.getRawFormat() . |
|
XMLOutputter(Format format)
This will create an XMLOutputter with the specified format characteristics. |
|
XMLOutputter(XMLOutputter that)
This will create an XMLOutputter with all the options as set in the given XMLOutputter . |
Method Summary | |
---|---|
XMLOutputter |
clone()
Returns a copy of this XMLOutputter. |
String |
escapeAttributeEntities(String str)
This will take the pre-defined entities in XML 1.0 and convert their character representation to the appropriate entity reference, suitable for XML attributes. |
String |
escapeElementEntities(String str)
This will take the three pre-defined entities in XML 1.0 (used specifically in XML elements) and convert their character representation to the appropriate entity reference, suitable for XML element content. |
Format |
getFormat()
Returns the current format in use by the outputter. |
void |
output(CDATA cdata,
OutputStream out)
Print out a node. |
void |
output(CDATA cdata,
Writer out)
Print out a node. |
void |
output(Comment comment,
OutputStream out)
Print out a . |
void |
output(Comment comment,
Writer out)
Print out a . |
void |
output(DocType docType,
OutputStream out)
Print out the . |
void |
output(DocType doctype,
Writer out)
Print out the . |
void |
output(Document doc,
OutputStream out)
This will print the Document to the given output stream. |
void |
output(Document doc,
Writer out)
This will print the Document to the given Writer. |
void |
output(Element element,
OutputStream out)
Print out an , including its s, and all contained
(child) elements, etc. |
void |
output(Element element,
Writer out)
Print out an , including its s, and all contained
(child) elements, etc. |
void |
output(EntityRef entity,
OutputStream out)
Print out a . |
void |
output(EntityRef entity,
Writer out)
Print out a . |
void |
output(List<Content> contents,
OutputStream out)
This will handle printing out a list of nodes. |
void |
output(List<Content> contents,
Writer out)
This will handle printing out a list of nodes. |
void |
output(ProcessingInstruction pi,
OutputStream out)
Print out a . |
void |
output(ProcessingInstruction pi,
Writer out)
Print out a . |
void |
output(Text text,
OutputStream out)
Print out a node. |
void |
output(Text text,
Writer out)
Print out a node. |
void |
outputElementContent(Element element,
OutputStream out)
This will handle printing out an 's content only, not including its tag, and
attributes. |
void |
outputElementContent(Element element,
Writer out)
This will handle printing out an 's content only, not including its tag, and
attributes. |
String |
outputString(CDATA cdata)
Return a string representing a CDATA node. |
String |
outputString(Comment comment)
Return a string representing a comment. |
String |
outputString(DocType docType)
Return a string representing a DocType. |
String |
outputString(Document doc)
Return a string representing a document. |
String |
outputString(Element element)
Return a string representing an element. |
String |
outputString(EntityRef entity)
Return a string representing an entity. |
String |
outputString(List<Content> list)
Return a string representing a list of nodes. |
String |
outputString(ProcessingInstruction pi)
Return a string representing a PI. |
String |
outputString(Text text)
Return a string representing a Text node. |
protected void |
printAttributes(Writer out,
List<Attribute> attributes,
Element parent,
XMLOutputter.NamespaceStack namespaces)
This will handle printing of a list. |
protected void |
printCDATA(Writer out,
CDATA cdata)
This will handle printing of text. |
protected void |
printComment(Writer out,
Comment comment)
This will handle printing of comments. |
protected void |
printDeclaration(Writer out,
Document doc,
String encoding)
This will handle printing of the declaration. |
protected void |
printDocType(Writer out,
DocType docType)
This handle printing the DOCTYPE declaration if one exists. |
protected void |
printElement(Writer out,
Element element,
int level,
XMLOutputter.NamespaceStack namespaces)
This will handle printing of a , its s, and all
contained (child) elements, etc. |
protected void |
printEntityRef(Writer out,
EntityRef entity)
This will handle printing a . |
protected void |
printProcessingInstruction(Writer out,
ProcessingInstruction pi)
This will handle printing of processing instructions. |
protected void |
printText(Writer out,
Text text)
This will handle printing of strings. |
void |
setFormat(Format format)
Sets the new format logic for the outputter. |
String |
toString()
Return a string listing of the settings for this XMLOutputter instance. |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected static final Format preserveFormat
protected Format currentFormat
Constructor Detail |
---|
public XMLOutputter()
XMLOutputter
with the default Format
matching Format.getRawFormat()
.
public XMLOutputter(Format format)
XMLOutputter
with the specified format characteristics. Note the format object
is cloned internally before use.
format
- The format characteristics.public XMLOutputter(XMLOutputter that)
XMLOutputter
with all the options as set in the given XMLOutputter
.
Note that XMLOutputter two = (XMLOutputter)one.clone();
would work equally well.
that
- the XMLOutputter to cloneMethod Detail |
---|
public void setFormat(Format format)
format
- the format to use for outputpublic Format getFormat()
public void output(Document doc, OutputStream out) throws IOException
Document
to the given output stream. The characters are printed using the
encoding specified in the constructor, or a default of UTF-8.
doc
- Document
to format.out
- OutputStream
to use.
IOException
- if there's any problem writing.public void output(DocType docType, OutputStream out) throws IOException
DocType
.
docType
- DocType
to output.out
- OutputStream
to use.
IOException
- if there's any problem writing.public void output(Element element, OutputStream out) throws IOException
Element
, including its Attribute
s, and all contained
(child) elements, etc.
element
- Element
to output.out
- Writer
to use.
IOException
- if there's any problem writing.public void outputElementContent(Element element, OutputStream out) throws IOException
Element
's content only, not including its tag, and
attributes. This can be useful for printing the content of an element that contains HTML, like
"<description>CoffeeDOM is <b>fun>!</description>".
element
- Element
to output.out
- OutputStream
to use.
IOException
- if there's any problem writing.public void output(List<Content> contents, OutputStream out) throws IOException
contents
- List
of nodes.out
- OutputStream
to use.
IOException
- if there's any problem writing.public void output(CDATA cdata, OutputStream out) throws IOException
CDATA
node.
cdata
- CDATA
to output.out
- OutputStream
to use.
IOException
- if there's any problem writing.public void output(Text text, OutputStream out) throws IOException
Text
node. Perfoms the necessary entity escaping and whitespace stripping.
text
- Text
to output.out
- OutputStream
to use.
IOException
- if there's any problem writing.public void output(Comment comment, OutputStream out) throws IOException
Comment
.
comment
- Comment
to output.out
- OutputStream
to use.
IOException
- if there's any problem writing.public void output(ProcessingInstruction pi, OutputStream out) throws IOException
ProcessingInstruction
.
pi
- ProcessingInstruction
to output.out
- OutputStream
to use.
IOException
- if there's any problem writing.public void output(EntityRef entity, OutputStream out) throws IOException
EntityRef
.
entity
- EntityRef
to output.out
- OutputStream
to use.
IOException
- if there's any problem writing.public void output(Document doc, Writer out) throws IOException
Document
to the given Writer. Warning: using your own Writer may cause the outputter's preferred character encoding to be ignored. If you use encodings other than UTF-8, we recommend using the method that takes an OutputStream instead.
doc
- Document
to format.out
- Writer
to use.
IOException
- if there's any problem writing.public void output(DocType doctype, Writer out) throws IOException
DocType
.
doctype
- DocType
to output.out
- Writer
to use.
IOException
- if there's any problem writing.public void output(Element element, Writer out) throws IOException
Element
, including its Attribute
s, and all contained
(child) elements, etc.
element
- Element
to output.out
- Writer
to use.
IOException
- if there's any problem writing.public void outputElementContent(Element element, Writer out) throws IOException
Element
's content only, not including its tag, and
attributes. This can be useful for printing the content of an element that contains HTML, like
"<description>CoffeeDOM is <b>fun>!</description>".
element
- Element
to output.out
- Writer
to use.
IOException
- if there's any problem writing.public void output(List<Content> contents, Writer out) throws IOException
contents
- List
of nodes.out
- Writer
to use.
IOException
- if there's any problem writing.public void output(CDATA cdata, Writer out) throws IOException
CDATA
node.
cdata
- CDATA
to output.out
- Writer
to use.
IOException
- if there's any problem writing.public void output(Text text, Writer out) throws IOException
Text
node. Performs the necessary entity escaping and whitespace stripping.
text
- Text
to output.out
- Writer
to use.
IOException
- if there's any problem writing.public void output(Comment comment, Writer out) throws IOException
Comment
.
comment
- Comment
to output.out
- Writer
to use.
IOException
- if there's any problem writing.public void output(ProcessingInstruction pi, Writer out) throws IOException
ProcessingInstruction
.
pi
- ProcessingInstruction
to output.out
- Writer
to use.
IOException
- if there's any problem writing.public void output(EntityRef entity, Writer out) throws IOException
EntityRef
.
entity
- EntityRef
to output.out
- Writer
to use.
IOException
- if there's any problem writing.public String outputString(Document doc)
doc
- Document
to format.
public String outputString(DocType docType)
docType
- DocType
to format.
public String outputString(Element element)
element
- Element
to format.
public String outputString(List<Content> list)
list
- List
to format.
public String outputString(CDATA cdata)
cdata
- CDATA
to format.
public String outputString(Text text)
text
- Text
to format.
public String outputString(Comment comment)
comment
- Comment
to format.
public String outputString(ProcessingInstruction pi)
pi
- ProcessingInstruction
to format.
public String outputString(EntityRef entity)
entity
- EntityRef
to format.
protected void printDeclaration(Writer out, Document doc, String encoding) throws IOException
doc
- Document
whose declaration to write.out
- Writer
to use.encoding
- The encoding to add to the declaration
IOException
protected void printDocType(Writer out, DocType docType) throws IOException
docType
- Document
whose declaration to write.out
- Writer
to use.
IOException
protected void printComment(Writer out, Comment comment) throws IOException
comment
- Comment
to write.out
- Writer
to use.
IOException
protected void printProcessingInstruction(Writer out, ProcessingInstruction pi) throws IOException
pi
- ProcessingInstruction
to write.out
- Writer
to use.
IOException
protected void printEntityRef(Writer out, EntityRef entity) throws IOException
EntityRef
. Only the entity reference such as
&entity;
will be printed. However, subclasses are free to override this method to print the
contents of the entity instead.
entity
- EntityRef
to output.out
- Writer
to use.
IOException
protected void printCDATA(Writer out, CDATA cdata) throws IOException
CDATA
text.
cdata
- CDATA
to output.out
- Writer
to use.
IOException
protected void printText(Writer out, Text text) throws IOException
Text
strings.
text
- Text
to write.out
- Writer
to use.
IOException
protected void printElement(Writer out, Element element, int level, XMLOutputter.NamespaceStack namespaces) throws IOException
Element
, its Attribute
s, and all
contained (child) elements, etc.
element
- Element
to output.out
- Writer
to use.level
- int
level of indention.namespaces
- List
stack of Namespaces in scope.
IOException
protected void printAttributes(Writer out, List<Attribute> attributes, Element parent, XMLOutputter.NamespaceStack namespaces) throws IOException
Attribute
list.
attributes
- List
of Attribute objctsnamespaces
- out
- Writer
to use
IOException
public String escapeAttributeEntities(String str)
str
- String
input to escape.
String
with escaped content.
IllegalArgumentException
- if an entity can not be escapedpublic String escapeElementEntities(String str)
str
- String
input to escape.
String
with escaped content.
IllegalArgumentException
- if an entity can not be escapedpublic XMLOutputter clone()
clone
in class Object
public String toString()
toString
in class Object
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |