/** * Pretty prints the given node * * @param node the node, usually a document, to be printed * @param prefs the formatting preferences * @param style the formatting style to use * @param lineSeparator the line separator to use, or null to use the default * @param endWithNewline if true, ensure that the printed output ends with a newline * @return a formatted string */ @NonNull public static String prettyPrint( @NonNull Node node, @NonNull XmlFormatPreferences prefs, @NonNull XmlFormatStyle style, @Nullable String lineSeparator, boolean endWithNewline) { XmlPrettyPrinter printer = new XmlPrettyPrinter(prefs, style, lineSeparator); printer.setEndWithNewline(endWithNewline); StringBuilder sb = new StringBuilder(1000); printer.prettyPrint(-1, node, null, null, sb, false /*openTagOnly*/); String xml = sb.toString(); if (node.getNodeType() == Node.DOCUMENT_NODE && !xml.startsWith("<?")) { // $NON-NLS-1$ xml = XML_PROLOG + xml; } return xml; }
/** * Pretty-prints the given XML document, which must be well-formed. If it is not, the original * unformatted XML document is returned * * @param xml the XML content to format * @param prefs the preferences to format with * @param style the style to format with * @param lineSeparator the line separator to use, such as "\n" (can be null, in which case the * system default is looked up via the line.separator property) * @return the formatted document (or if a parsing error occurred, returns the unformatted * document) */ @NonNull public static String prettyPrint( @NonNull String xml, @NonNull XmlFormatPreferences prefs, @NonNull XmlFormatStyle style, @Nullable String lineSeparator) { Document document = XmlUtils.parseDocumentSilently(xml, true); if (document != null) { XmlPrettyPrinter printer = new XmlPrettyPrinter(prefs, style, lineSeparator); printer.setEndWithNewline(xml.endsWith(printer.getLineSeparator())); StringBuilder sb = new StringBuilder(3 * xml.length() / 2); printer.prettyPrint(-1, document, null, null, sb, false /*openTagOnly*/); return sb.toString(); } else { // Parser error: just return the unformatted content return xml; } }