XML reťazce vytlačené pekne skrz Javu

Ako sformátovať XML reťazec do nádhernej sformátovanej podoby?

Použijeme XSLT transformátor! (Ehm.)

    public static String prettyPrintXml(String xml) throws TransformerException {
            Transformer transformer = TransformerFactory.newInstance().newTransformer();
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
            StreamResult result = new StreamResult(new StringWriter());
            StreamSource source = new StreamSource(new StringReader(xml));
            transformer.transform(source, result);
            String prettifiedXml = result.getWriter().toString();

            return prettifiedXml;
    }

Základom sú dve vlastnosti:

  • zapnutie výstupnej vlastnosti (output property) pre odsadzovanie (indent)
  • zapnutie výstupnej vlastnosti pre počet medzier v odsadzovaní (indent-amount). Ak táto vlastnosť nie je nastavená, XML bude sformátované do riadkov, ale bez odsadzovania príjemného pre ľudské oko.

Finta spočíva v transformácii výsledku pomocou prázdnej XSLT šablóny do reťazcového StringWritera, z ktorého si vyzdvihneme výsledok.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *