java xslt example code
java se agrega al archivo (5)
Hay un par de opciones aquí.
Supongo que su resultado es un StreamResult
que está creando con una String
especifica la ruta del archivo de destino. Puede considerar abrir FileOutputStream
usted mismo y construir su StreamResult
con eso. Luego, cuando el transformador esté listo, agregue el terminador de línea, enjuague y cierre la corriente. En ausencia de restricciones de lo contrario, usaría este enfoque.
Si desea volver a abrir el archivo, como se muestra en la pregunta, deberá usar un constructor FileOutputStream
que tome el argumento opcional de append
. Establezca esto en true
para evitar golpear el resultado de la transformación que acaba de completarse.
También puede explorar la configuración de la propiedad de salida de indent
en su transformación, o incluir el terminador de línea necesario directamente en su plantilla.
Busqué en Google esto por un tiempo, pero no puedo encontrarlo y debería ser fácil. Quiero agregar un CR al final de un archivo XML que estoy creando con un transformador. ¿Hay alguna manera de hacer esto?
Intenté lo siguiente, pero ¿esto resultó en un archivo en blanco?
Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "file:///ReportWiz.dtd");
xformer.transform(source, result);
OutputStream writer = new FileOutputStream(file);
Byte b = ''/n'';
writer.write(b);
writer.close();
La respuesta obvia es usar StreamResult con un escritor, y anexar tu personaje al escritor antes de cerrar.
Parece que está intentando volver a abrir el archivo para agregar el carácter. Las dos formas de argumento de los constructores FileOutputStream
incluyen un indicador de agregar.
No sabía esta clase de transformadores. Pero no veo conexión entre sus variables de escritor / archivo y sus variables xformer / source / result ... Parece que solo escribe una nueva línea.
A menos que hayas omitido alguna parte esencial.
Simple ... solo agrega la opción de agregar :
new FileOutputStream(f, true /* append */);
una nota, asegúrese de escribir su carácter de línea nueva usando la misma codificación de caracteres que utilizó para la serialización xml, o su archivo se romperá.