XmlOutputFormat.java

/*
 * SPDX-License-Identifier: Apache-2.0
 * See LICENSE file for details.
 *
 * Copyright 2025-2026 Hazendaz
 * Copyright 2011-2025 Acegi Technology Pty Limited.
 */
package au.com.acegi.xmlformat;

import org.dom4j.io.OutputFormat;

/**
 * Extended DOM4J configuration.
 * <ul>
 * <li>Defaults to pretty print.
 * <li>Adds an option to keep blank lines.
 * </ul>
 */
public class XmlOutputFormat extends OutputFormat {

    private boolean keepBlankLines;

    /**
     * Instantiates a new xml output format.
     */
    public XmlOutputFormat() {
        // same as pretty print
        setIndentSize(2);
        setNewlines(true);
        setTrimText(true);
        setPadText(true);
    }

    /**
     * When set to true, preserves at most one blank line between tags, if it was alredy present in the input file.
     * Defaults to <code>false</code>.
     *
     * @return Whether blank lines are preserved, or not.
     */
    public boolean isKeepBlankLines() {
        return keepBlankLines;
    }

    /**
     * When set to true, preserves at most one blank line between tags, if it was alredy present in the input file.
     *
     * @param keepBlankLines
     *            true to preserve at most one blank line, false to remove all blank lines.
     */
    public void setKeepBlankLines(final boolean keepBlankLines) {
        this.keepBlankLines = keepBlankLines;
    }
}