Returns a copy of this DocumentPrinter
that omits XML declarations
Returns a copy of this DocumentPrinter
that omits XML declarations
Converts the Document
to a String
.
Converts the Document
to a String
. May use a lot of memory for large XML documents.
To have more control over the character encoding of the output, when converting the String to bytes
(and of the encoding mentioned in the XML declaration, if any), consider using one of the other overloaded
print
methods taking a Document
.
Serializes the Document
to an output stream, using the given encoding.
Serializes the Document
to an output stream, using the given encoding.
This method should close the output stream afterwards.
May use a lot of memory for large XML documents, although not as much as the print
method that returns a byte array.
Converts the Elem
to a String
, omitting the XML declaration.
Converts the Elem
to a String
, omitting the XML declaration. May use a lot of memory for large XML documents.
To have more control over the character encoding of the output, when converting the String to bytes
(and of the encoding mentioned in the XML declaration, if any), consider using one of the other overloaded
print
methods taking an Elem
.
Serializes the Elem
to an output stream, omitting the XML declaration.
Serializes the Elem
to an output stream, omitting the XML declaration.
This method should close the output stream afterwards.
Converts the Elem
to a byte array, omitting the XML declaration
Converts the Elem
to a byte array, omitting the XML declaration
Converts the Document
to a byte array, using the given encoding.
Converts the Document
to a byte array, using the given encoding. May use a lot of memory for large XML documents.
DOM-based
Document
printer.It may be the case that the
DocumentPrinter
does not indent. See bug http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6296446. This problem appears especially when creating aDocument
from scratch, usingNodeBuilder
s. A possible (implementation-specific!) workaround is to create theDocumentPrinter
as follows:If more flexibility is needed in configuring the
DocumentPrinter
than offered by this class, consider writing a wrapperDocumentPrinter
which wraps aDocumentPrinterUsingDom
, but adapts theprint
method. This would make it possible to adapt the conversion from a yaidomDocument
to DOMDocument
, for example.A
DocumentPrinterUsingDom
instance can be re-used multiple times, from the same thread. If theDocumentBuilderFactory
andTransformerFactory
are thread-safe, it can even be re-used from multiple threads. Typically aDocumentBuilderFactory
orTransformerFactory
cannot be trusted to be thread-safe, however. In a web application, one (safe) way to deal with that is to use oneDocumentBuilderFactory
andTransformerFactory
instance per request.Notes on HTML
In order to serialize a yaidom Document as HTML (which could have been parsed using the TagSoup library), a "transformer creator" can be coded as follows:
This "transformer creator" is then passed as one of the arguments during
DocumentPrinter
construction.Using such a
DocumentPrinter
configured for "HTML serialization", the serialized HTML is hopefully better understood by browsers than would have been the case with aDocumentPrinter
configured for "XML serialization". For example, script tags (with empty content) are typically not written as self-closing tags in the first case, whereas they are in the second case.If a
DocumentPrinter
is not explicitly configured for either "HTML or XML serialization", it may still be the case that HTML is serialized as HTML, depending on the TrAX implementation. Yet it is likely that in that case other elements than the document element would be serialized as XML instead of HTML. After all, (immutable) yaidom elements do not know about their ancestry.