Class DefaultXmlPrettyPrinter
- java.lang.Object
-
- com.fasterxml.jackson.dataformat.xml.util.DefaultXmlPrettyPrinter
-
- All Implemented Interfaces:
com.fasterxml.jackson.core.PrettyPrinter,com.fasterxml.jackson.core.util.Instantiatable<DefaultXmlPrettyPrinter>,XmlPrettyPrinter,java.io.Serializable
public class DefaultXmlPrettyPrinter extends java.lang.Object implements XmlPrettyPrinter, com.fasterxml.jackson.core.util.Instantiatable<DefaultXmlPrettyPrinter>, java.io.Serializable
Indentation to use with XML is different from JSON, because JSON requires use of separator characters and XML just basic whitespace.Note that only a subset of methods of
PrettyPrinteractually get called byToXmlGenerator; because of this, implementation is bit briefer (and uglier...).- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classDefaultXmlPrettyPrinter.FixedSpaceIndenterThis is a very simple indenter that only every adds a single space for indentation.static interfaceDefaultXmlPrettyPrinter.IndenterInterface that defines objects that can produce indentation used to separate object entries and array values.protected classDefaultXmlPrettyPrinter.Lf2SpacesIndenterDefault linefeed-based indenter uses system-specific linefeeds and 2 spaces for indentation per level.protected static classDefaultXmlPrettyPrinter.NopIndenterDummy implementation that adds no indentation whatsoever
-
Field Summary
Fields Modifier and Type Field Description protected DefaultXmlPrettyPrinter.Indenter_arrayIndenterBy default, let's use only spaces to separate array values.protected boolean_justHadStartElementMarker flag set on start element, and cleared if an end element is encountered.protected int_nestingNumber of open levels of nesting.protected java.lang.String_newLineprotected DefaultXmlPrettyPrinter.Indenter_objectIndenterBy default, let's use linefeed-adding indenter for separate object entries.private static longserialVersionUID(package private) static intSPACE_COUNT(package private) static char[]SPACESprivate static java.lang.StringSYSTEM_DEFAULT_NEW_LINEBy default, will try to set as System.getProperty("line.separator").
-
Constructor Summary
Constructors Modifier Constructor Description DefaultXmlPrettyPrinter()protectedDefaultXmlPrettyPrinter(DefaultXmlPrettyPrinter base)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidbeforeArrayValues(com.fasterxml.jackson.core.JsonGenerator gen)voidbeforeObjectEntries(com.fasterxml.jackson.core.JsonGenerator gen)DefaultXmlPrettyPrintercreateInstance()voidindentArraysWith(DefaultXmlPrettyPrinter.Indenter i)voidindentObjectsWith(DefaultXmlPrettyPrinter.Indenter i)DefaultXmlPrettyPrinterwithCustomNewLine(java.lang.String newLine)Sets custom new-line.voidwriteArrayValueSeparator(com.fasterxml.jackson.core.JsonGenerator gen)voidwriteEndArray(com.fasterxml.jackson.core.JsonGenerator gen, int nrOfValues)voidwriteEndElement(org.codehaus.stax2.XMLStreamWriter2 sw, int nrOfEntries)Method for forcibly writing an end element, without going through Jackson generator (and thus, without updating currently active element stack)voidwriteEndObject(com.fasterxml.jackson.core.JsonGenerator gen, int nrOfEntries)voidwriteLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, boolean value)voidwriteLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, char[] buffer, int offset, int len, boolean isCData)voidwriteLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, double value)voidwriteLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, float value)voidwriteLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, int value)voidwriteLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, long value)voidwriteLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, java.lang.String text, boolean isCData)voidwriteLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, java.math.BigDecimal value)voidwriteLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, java.math.BigInteger value)voidwriteLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, org.codehaus.stax2.typed.Base64Variant base64variant, byte[] data, int offset, int len)voidwriteLeafNullElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName)voidwriteLeafXsiNilElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName)voidwriteObjectEntrySeparator(com.fasterxml.jackson.core.JsonGenerator gen)voidwriteObjectFieldValueSeparator(com.fasterxml.jackson.core.JsonGenerator gen)voidwritePrologLinefeed(org.codehaus.stax2.XMLStreamWriter2 sw)Method for trying to write a linefeed to separate entities outside of the root element (that is, in prolog or epilog), most often called to separate XML declaration from the root element.voidwriteRootValueSeparator(com.fasterxml.jackson.core.JsonGenerator gen)voidwriteStartArray(com.fasterxml.jackson.core.JsonGenerator gen)voidwriteStartElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName)Method for forcibly writing a start element, without going through Jackson generator (and thus, without updating currently active element stack)voidwriteStartObject(com.fasterxml.jackson.core.JsonGenerator gen)
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
_arrayIndenter
protected DefaultXmlPrettyPrinter.Indenter _arrayIndenter
By default, let's use only spaces to separate array values.
-
_objectIndenter
protected DefaultXmlPrettyPrinter.Indenter _objectIndenter
By default, let's use linefeed-adding indenter for separate object entries. We'll further configure indenter to use system-specific linefeeds, and 2 spaces per level (as opposed to, say, single tabs)
-
SYSTEM_DEFAULT_NEW_LINE
private static final java.lang.String SYSTEM_DEFAULT_NEW_LINE
By default, will try to set as System.getProperty("line.separator"). Can later set custom new line with withCustomNewLine method.- Since:
- 2.15
-
_newLine
protected java.lang.String _newLine
-
SPACE_COUNT
static final int SPACE_COUNT
- See Also:
- Constant Field Values
-
SPACES
static final char[] SPACES
-
_nesting
protected transient int _nesting
Number of open levels of nesting. Used to determine amount of indentation to use.
-
_justHadStartElement
protected transient boolean _justHadStartElement
Marker flag set on start element, and cleared if an end element is encountered. Used for suppressing indentation to allow empty elements.- Since:
- 2.3
-
-
Constructor Detail
-
DefaultXmlPrettyPrinter
public DefaultXmlPrettyPrinter()
-
DefaultXmlPrettyPrinter
protected DefaultXmlPrettyPrinter(DefaultXmlPrettyPrinter base)
-
-
Method Detail
-
indentArraysWith
public void indentArraysWith(DefaultXmlPrettyPrinter.Indenter i)
-
indentObjectsWith
public void indentObjectsWith(DefaultXmlPrettyPrinter.Indenter i)
-
withCustomNewLine
public DefaultXmlPrettyPrinter withCustomNewLine(java.lang.String newLine)
Sets custom new-line.- Since:
- 2.15
-
createInstance
public DefaultXmlPrettyPrinter createInstance()
- Specified by:
createInstancein interfacecom.fasterxml.jackson.core.util.Instantiatable<DefaultXmlPrettyPrinter>
-
writeRootValueSeparator
public void writeRootValueSeparator(com.fasterxml.jackson.core.JsonGenerator gen) throws java.io.IOException- Specified by:
writeRootValueSeparatorin interfacecom.fasterxml.jackson.core.PrettyPrinter- Throws:
java.io.IOException
-
beforeArrayValues
public void beforeArrayValues(com.fasterxml.jackson.core.JsonGenerator gen) throws java.io.IOException- Specified by:
beforeArrayValuesin interfacecom.fasterxml.jackson.core.PrettyPrinter- Throws:
java.io.IOException
-
writeStartArray
public void writeStartArray(com.fasterxml.jackson.core.JsonGenerator gen) throws java.io.IOException- Specified by:
writeStartArrayin interfacecom.fasterxml.jackson.core.PrettyPrinter- Throws:
java.io.IOException
-
writeArrayValueSeparator
public void writeArrayValueSeparator(com.fasterxml.jackson.core.JsonGenerator gen) throws java.io.IOException- Specified by:
writeArrayValueSeparatorin interfacecom.fasterxml.jackson.core.PrettyPrinter- Throws:
java.io.IOException
-
writeEndArray
public void writeEndArray(com.fasterxml.jackson.core.JsonGenerator gen, int nrOfValues) throws java.io.IOException- Specified by:
writeEndArrayin interfacecom.fasterxml.jackson.core.PrettyPrinter- Throws:
java.io.IOException
-
beforeObjectEntries
public void beforeObjectEntries(com.fasterxml.jackson.core.JsonGenerator gen) throws java.io.IOException, com.fasterxml.jackson.core.JsonGenerationException- Specified by:
beforeObjectEntriesin interfacecom.fasterxml.jackson.core.PrettyPrinter- Throws:
java.io.IOExceptioncom.fasterxml.jackson.core.JsonGenerationException
-
writeStartObject
public void writeStartObject(com.fasterxml.jackson.core.JsonGenerator gen) throws java.io.IOException- Specified by:
writeStartObjectin interfacecom.fasterxml.jackson.core.PrettyPrinter- Throws:
java.io.IOException
-
writeObjectEntrySeparator
public void writeObjectEntrySeparator(com.fasterxml.jackson.core.JsonGenerator gen) throws java.io.IOException- Specified by:
writeObjectEntrySeparatorin interfacecom.fasterxml.jackson.core.PrettyPrinter- Throws:
java.io.IOException
-
writeObjectFieldValueSeparator
public void writeObjectFieldValueSeparator(com.fasterxml.jackson.core.JsonGenerator gen) throws java.io.IOException- Specified by:
writeObjectFieldValueSeparatorin interfacecom.fasterxml.jackson.core.PrettyPrinter- Throws:
java.io.IOException
-
writeEndObject
public void writeEndObject(com.fasterxml.jackson.core.JsonGenerator gen, int nrOfEntries) throws java.io.IOException- Specified by:
writeEndObjectin interfacecom.fasterxml.jackson.core.PrettyPrinter- Throws:
java.io.IOException
-
writeStartElement
public void writeStartElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName) throws javax.xml.stream.XMLStreamExceptionDescription copied from interface:XmlPrettyPrinterMethod for forcibly writing a start element, without going through Jackson generator (and thus, without updating currently active element stack)- Specified by:
writeStartElementin interfaceXmlPrettyPrinter- Throws:
javax.xml.stream.XMLStreamException
-
writeEndElement
public void writeEndElement(org.codehaus.stax2.XMLStreamWriter2 sw, int nrOfEntries) throws javax.xml.stream.XMLStreamExceptionDescription copied from interface:XmlPrettyPrinterMethod for forcibly writing an end element, without going through Jackson generator (and thus, without updating currently active element stack)- Specified by:
writeEndElementin interfaceXmlPrettyPrinter- Throws:
javax.xml.stream.XMLStreamException
-
writeLeafElement
public void writeLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, java.lang.String text, boolean isCData) throws javax.xml.stream.XMLStreamException- Specified by:
writeLeafElementin interfaceXmlPrettyPrinter- Throws:
javax.xml.stream.XMLStreamException
-
writeLeafElement
public void writeLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, char[] buffer, int offset, int len, boolean isCData) throws javax.xml.stream.XMLStreamException- Specified by:
writeLeafElementin interfaceXmlPrettyPrinter- Throws:
javax.xml.stream.XMLStreamException
-
writeLeafElement
public void writeLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, boolean value) throws javax.xml.stream.XMLStreamException- Specified by:
writeLeafElementin interfaceXmlPrettyPrinter- Throws:
javax.xml.stream.XMLStreamException
-
writeLeafElement
public void writeLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, int value) throws javax.xml.stream.XMLStreamException- Specified by:
writeLeafElementin interfaceXmlPrettyPrinter- Throws:
javax.xml.stream.XMLStreamException
-
writeLeafElement
public void writeLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, long value) throws javax.xml.stream.XMLStreamException- Specified by:
writeLeafElementin interfaceXmlPrettyPrinter- Throws:
javax.xml.stream.XMLStreamException
-
writeLeafElement
public void writeLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, double value) throws javax.xml.stream.XMLStreamException- Specified by:
writeLeafElementin interfaceXmlPrettyPrinter- Throws:
javax.xml.stream.XMLStreamException
-
writeLeafElement
public void writeLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, float value) throws javax.xml.stream.XMLStreamException- Specified by:
writeLeafElementin interfaceXmlPrettyPrinter- Throws:
javax.xml.stream.XMLStreamException
-
writeLeafElement
public void writeLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, java.math.BigInteger value) throws javax.xml.stream.XMLStreamException- Specified by:
writeLeafElementin interfaceXmlPrettyPrinter- Throws:
javax.xml.stream.XMLStreamException
-
writeLeafElement
public void writeLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, java.math.BigDecimal value) throws javax.xml.stream.XMLStreamException- Specified by:
writeLeafElementin interfaceXmlPrettyPrinter- Throws:
javax.xml.stream.XMLStreamException
-
writeLeafElement
public void writeLeafElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName, org.codehaus.stax2.typed.Base64Variant base64variant, byte[] data, int offset, int len) throws javax.xml.stream.XMLStreamException- Specified by:
writeLeafElementin interfaceXmlPrettyPrinter- Throws:
javax.xml.stream.XMLStreamException
-
writeLeafNullElement
public void writeLeafNullElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName) throws javax.xml.stream.XMLStreamException- Specified by:
writeLeafNullElementin interfaceXmlPrettyPrinter- Throws:
javax.xml.stream.XMLStreamException
-
writeLeafXsiNilElement
public void writeLeafXsiNilElement(org.codehaus.stax2.XMLStreamWriter2 sw, java.lang.String nsURI, java.lang.String localName) throws javax.xml.stream.XMLStreamException- Throws:
javax.xml.stream.XMLStreamException
-
writePrologLinefeed
public void writePrologLinefeed(org.codehaus.stax2.XMLStreamWriter2 sw) throws javax.xml.stream.XMLStreamExceptionDescription copied from interface:XmlPrettyPrinterMethod for trying to write a linefeed to separate entities outside of the root element (that is, in prolog or epilog), most often called to separate XML declaration from the root element.- Specified by:
writePrologLinefeedin interfaceXmlPrettyPrinter- Throws:
javax.xml.stream.XMLStreamException
-
-