1
Я использую Transformer для префикса и вставки отступа в XML, который изначально является одной большой линией. Вот мой код:Чтение результата трансформатора по строке (Java)
BufferedWriter br = null;
Source xmlInput = new StreamSource(inputSR);
StringWriter stringWriter = new StringWriter();
StreamResult xmlOutput = new StreamResult(stringWriter);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
transformerFactory.setAttribute("indent-number", 2);
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(xmlInput, xmlOutput);
Как я могу написать xmlOutput
в файл, построчно (без загрузки всей строки в памяти)?
Целью было изменение некоторых тегов перед записью на диск. – Nati
Возможно, вам лучше использовать SAXResult. Затем дерево результатов будет отправлено по событию в ваш ContentHandler. Если вы хотите изменить поток результатов после сериализации, вы можете реализовать Writer и перехватить вызовы write(), но вам нужно будет сделать свою собственную буферизацию, чтобы избежать текста, который вы ищете, охватывая несколько вызовов для таких методов, как записывать(). –