Estoy utilizando el transformador XML integrado de Java para tomar un documento DOM e imprimir el XML resultante. El problema es que no está sangrando el texto en absoluto a pesar de haber establecido el parámetro "sangría" explícitamente.Java: cómo sangrar XML generado por Transformer
código de ejemplo
public class TestXML {
public static void main(String args[]) throws Exception {
ByteArrayOutputStream s;
Document d = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Transformer t = TransformerFactory.newInstance().newTransformer();
Element a,b;
a = d.createElement("a");
b = d.createElement("b");
a.appendChild(b);
d.appendChild(a);
t.setParameter(OutputKeys.INDENT, "yes");
s = new ByteArrayOutputStream();
t.transform(new DOMSource(d),new StreamResult(s));
System.out.println(new String(s.toByteArray()));
}
}
resultado
<?xml version="1.0" encoding="UTF-8" standalone="no"?><a><b/></a>
resultado deseado
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<a>
<b/>
</a>
Pensamientos?
oh hombre * cierra estén dirigidos hacia el escritorio * gracias – Mike
parece tonto para mí que la indentación por defecto es 0, pero además de 'GUIÓN = sí' También tuve que agregar esto: 't.setOutputProperty (" {http://xml.apache.org/xslt}indent-amount "," 2 ");' – lapo
Ten cuidado. Esta propiedad de sangría no funciona en java 5. lo hace en java 7. No lo ha intentado en java 6 – Hilikus