public class Format
extends java.lang.Object
implements java.lang.Cloneable
getRawFormat()
(no whitespace changes),
getPrettyFormat()
(whitespace beautification), and
getCompactFormat()
(whitespace normalization).
Several modes are available to effect the way textual content is printed.
See the documentation for Format.TextMode
for details.
Note about Line Separator:
By default JDOM will always use the CRNL sequence "\r\n" for output. This
can be changed in a number of different ways. See the LineSeparator
enumeration for more information.
Note about XML Character Escaping:
JDOM will escape characters in the output based on the EscapeStrategy that is specified by this Format. The Format will by default use a sensible EscapeStrategy that is based on the character encoding of the output. If the default escape mechanism is not producing the correct results you can change the EscapeStrategy on the format to suit your own needs.
LineSeparator
Modifier and Type | Class and Description |
---|---|
static class |
Format.TextMode
Class to signify how text should be handled on output.
|
Modifier and Type | Method and Description |
---|---|
Format |
clone() |
static java.lang.String |
compact(java.lang.String str)
Use the XML Specification definition of whitespace to compact the
input value.
|
static java.lang.String |
escapeAttribute(EscapeStrategy strategy,
java.lang.String value)
This will take the three pre-defined entities in XML 1.0 ('<', '>',
and '&' - used specifically in XML elements) as well as CR/NL, tabs,
and Quote characters which require escaping inside Attribute values and
converts their character representation to the appropriate entity
reference suitable for XML attribute content.
|
static java.lang.String |
escapeText(EscapeStrategy strategy,
java.lang.String eol,
java.lang.String value)
This will take the three pre-defined entities in XML 1.0 ('<', '>',
and '&' - used specifically in XML elements) and convert their
character representation to the appropriate entity reference, suitable
for XML element content.
|
static Format |
getCompactFormat()
Returns a new Format object that performs whitespace normalization, uses
the UTF-8 encoding, doesn't expand empty elements, includes the
declaration and encoding, and uses the default entity escape strategy.
|
java.lang.String |
getEncoding()
Returns the configured output encoding.
|
EscapeStrategy |
getEscapeStrategy()
Returns the current escape strategy
|
boolean |
getExpandEmptyElements()
Returns whether empty elements are expanded.
|
boolean |
getIgnoreTrAXEscapingPIs()
Returns whether JAXP TrAX processing instructions for
disabling/enabling output escaping are ignored.
|
java.lang.String |
getIndent()
Returns the indent string in use.
|
java.lang.String |
getLineSeparator()
Returns the current line separator.
|
boolean |
getOmitDeclaration()
Returns whether the XML declaration will be omitted.
|
boolean |
getOmitEncoding()
Returns whether the XML declaration encoding will be omitted.
|
static Format |
getPrettyFormat()
Returns a new Format object that performs whitespace beautification with
2-space indents, uses the UTF-8 encoding, doesn't expand empty elements,
includes the declaration and encoding, and uses the default entity
escape strategy.
|
static Format |
getRawFormat()
Returns a new Format object that performs no whitespace changes, uses
the UTF-8 encoding, doesn't expand empty elements, includes the
declaration and encoding, and uses the default entity escape strategy.
|
Format.TextMode |
getTextMode()
Returns the current text output style.
|
boolean |
isSpecifiedAttributesOnly()
Will Attributes defaulted from the DTD or XMLSchema
be output
|
Format |
setEncoding(java.lang.String encoding)
Sets the output encoding.
|
Format |
setEscapeStrategy(EscapeStrategy strategy)
Sets the
EscapeStrategy to use for character escaping. |
Format |
setExpandEmptyElements(boolean expandEmptyElements)
This will set whether empty elements are expanded from
<tagName/> to
<tagName></tagName> . |
void |
setIgnoreTrAXEscapingPIs(boolean ignoreTrAXEscapingPIs)
This will set whether JAXP TrAX processing instructions for
disabling/enabling output escaping are ignored.
|
Format |
setIndent(java.lang.String indent)
This will set the indent
String to use; this
is usually a String of empty spaces. |
Format |
setLineSeparator(LineSeparator separator)
This will set the newline separator sequence.
|
Format |
setLineSeparator(java.lang.String separator)
This will set the newline separator (
LineSeparator ). |
Format |
setOmitDeclaration(boolean omitDeclaration)
This will set whether the XML declaration
(
<?xml version="1.0"?> )
will be omitted or not. |
Format |
setOmitEncoding(boolean omitEncoding)
This will set whether the XML declaration
(
<?xml version="1.0"
encoding="UTF-8"?> )
includes the encoding of the document. |
void |
setSpecifiedAttributesOnly(boolean specifiedAttributesOnly)
Set whether only those Attributes specified in the input XML should
be output.
|
Format |
setTextMode(Format.TextMode mode)
This sets the text output style.
|
static java.lang.String |
trimBoth(java.lang.String str)
Use the XML Specification definition of whitespace to trim the
input value.
|
static java.lang.String |
trimLeft(java.lang.String str)
Use the XML Specification definition of whitespace to Left-trim the
input value.
|
static java.lang.String |
trimRight(java.lang.String str)
Use the XML Specification definition of whitespace to Right-trim the
input value.
|
public static Format getRawFormat()
public static Format getPrettyFormat()
public static Format getCompactFormat()
public static final java.lang.String compact(java.lang.String str)
str
- The value to compact.public static final java.lang.String trimRight(java.lang.String str)
str
- The value to trim.public static final java.lang.String trimLeft(java.lang.String str)
str
- The value to trim.public static final java.lang.String trimBoth(java.lang.String str)
str
- The value to trim.public static final java.lang.String escapeAttribute(EscapeStrategy strategy, java.lang.String value)
strategy
- The EscapeStrategy to query.value
- String
Attribute value to escape.IllegalDataException
- if an entity can not be escapedpublic static final java.lang.String escapeText(EscapeStrategy strategy, java.lang.String eol, java.lang.String value)
strategy
- The EscapeStrategyeol
- The End-Of-Line sequence to be used (may be null).value
- The String to escapeIllegalDataException
- if an entity can not be escapedpublic Format setEscapeStrategy(EscapeStrategy strategy)
EscapeStrategy
to use for character escaping.strategy
- the EscapeStrategy to usepublic EscapeStrategy getEscapeStrategy()
public Format setLineSeparator(java.lang.String separator)
LineSeparator
).
The default is \r\n
.
Use the setLineSeparator(LineSeparator)
method to set
standard separators in an easier way.
To make it output the system default line ending string, call
setLineSeparator(System.getProperty("line.separator"))
.
To output "UNIX-style" documents, call
setLineSeparator("\n")
. To output "Mac-style"
documents, call setLineSeparator("\r")
. DOS-style
documents use CR-LF ("\r\n"), which is the default.
Note that this only applies to newlines generated by the
outputter. All XML parsers are required to 'normalize' all the
combinations of line separators to just '\n'. As a result, if any JDOM
component has an end-of-line-like value (e.g. '\r') in it then that value
must be the result of an escaped value in the XML source document

or a value explicitly set with one of the Text
value setters. Values in JDOM content that were explicitly set to be
'\r' will always be escaped on XML Output.
The actual newline separator itself though can be set with this method. Any internal newlines in Text output will be represented by this end-of-line sequence. For example, the following code:
Text txt = new Text("\r\n"); XMLOutputter xout = new XMLOutputter(); String result = xout.outputString(txt);will produce the literal String sequence "
\r\n" because the original \r is escaped to be

and the original \n
is replaced with the JDOM default Line Separator "\r\n".
If the format's "indent" property is null (as is the default for the Raw and Compact formats), then this value only effects the newlines written after the declaration and doctype, as well as any newlines embedded within existing text content.
Setting the indent to be null will disable end-of-line processing for any formatting, but will not affect substitution of embedded \n. Setting this value to null or the empty string will disable all end-of-line modifications.separator
- String
line separator to use.setTextMode(org.jdom2.output.Format.TextMode)
,
setLineSeparator(LineSeparator)
public Format setLineSeparator(LineSeparator separator)
This method differs from setLineSeparator(String)
slightly in
that, to disable end-of-line processing you should call:
Format.setLinewSeparator(LineSeparator.NONE);
separator
- LineSeparator
line separator to usfor comprehensive notes.
public java.lang.String getLineSeparator()
public Format setOmitEncoding(boolean omitEncoding)
<?xml version="1.0"
encoding="UTF-8"?>
)
includes the encoding of the document. It is common to omit
this in uses such as WML and other wireless device protocols.omitEncoding
- boolean
indicating whether or not
the XML declaration should indicate the document encoding.public boolean getOmitEncoding()
public Format setOmitDeclaration(boolean omitDeclaration)
<?xml version="1.0"?>
)
will be omitted or not. It is common to omit this in uses such
as SOAP and XML-RPC calls.omitDeclaration
- boolean
indicating whether or not
the XML declaration should be omitted.public boolean getOmitDeclaration()
public Format setExpandEmptyElements(boolean expandEmptyElements)
<tagName/>
to
<tagName></tagName>
.expandEmptyElements
- boolean
indicating whether or not
empty elements should be expanded.public boolean getExpandEmptyElements()
public void setIgnoreTrAXEscapingPIs(boolean ignoreTrAXEscapingPIs)
When processed, these processing instructions are removed from
the generated XML text and control whether the element text
content is output verbatim or with escaping of the pre-defined
entities in XML 1.0. The text to be output verbatim shall be
surrounded by the
<?javax.xml.transform.disable-output-escaping ?>
and <?javax.xml.transform.enable-output-escaping ?>
PIs.
When ignored, the processing instructions are present in the generated XML text and the pre-defined entities in XML 1.0 are escaped.
Default: false
.
ignoreTrAXEscapingPIs
- boolean
indicating
whether or not TrAX output escaping PIs are ignored.Result.PI_ENABLE_OUTPUT_ESCAPING
,
Result.PI_DISABLE_OUTPUT_ESCAPING
public boolean getIgnoreTrAXEscapingPIs()
public Format setTextMode(Format.TextMode mode)
Format.TextMode
instances. The default is Format.TextMode.PRESERVE
.mode
- The TextMode to set.public Format.TextMode getTextMode()
public Format setIndent(java.lang.String indent)
String
to use; this
is usually a String
of empty spaces. If you pass
the empty string (""), then no indentation will happen but newlines
will still be generated. Passing null will result in no indentation
and no newlines generated. Default: none (null)indent
- String
to use for indentation.public java.lang.String getIndent()
public Format setEncoding(java.lang.String encoding)
encoding
- the encoding format. Use XML-style names like
"UTF-8" or "ISO-8859-1" or "US-ASCII"public java.lang.String getEncoding()
public boolean isSpecifiedAttributesOnly()
public void setSpecifiedAttributesOnly(boolean specifiedAttributesOnly)
specifiedAttributesOnly
- true if the defaulted
Attributes should be ignored, false if they should be outputpublic Format clone()
clone
in class java.lang.Object
Copyright © 2021 Jason Hunter, Brett McLaughlin. All Rights Reserved.