2015-07-15 5 views
0

Мой код получает XMLString от InputStreamReader (это на самом деле выход REST запроса на другой сервер), а затем String записывается в файл (файл включает в себя не только XML).Читайте XML от InputStreamReader и писать его в файл

Проблема заключается в том, что String принимается как одна строка XML и поэтому хранится как одна огромная строка в файле (без отступов, вкладок, форматирования и т. Д.).

Могу ли я получить этот поток XML и отформатировать его при записи его в файл?

Примечание: я не могу использовать DOM здесь, он должен быть реализован без загрузки XML в память.

+0

В строке 'replaceAll ("", "$ 0 \ г \ п")'. Для углубления требуется больше. Кроме того, это смешение не подходит для некоторых тегов. –

ответ

0

Вы можете сделать это с помощью Transformer и SAX, если вы имеете право: -

public static void prettyPrintXmlToFile(String sourceXml, File targetFile) throws Exception{ 
    Transformer serializer = SAXTransformerFactory.newInstance().newTransformer(); 
    serializer.setOutputProperty(OutputKeys.INDENT, "yes"); 
    serializer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); 
    Source xmlSource = new SAXSource(new InputSource(new StringReader(sourceXml))); 
    StreamResult res = new StreamResult(targetFile); 
    serializer.transform(xmlSource, res); 
} 
Смежные вопросы