Java 从InputStreamReader读取XML并将其写入文件
我的代码从InputStreamReader接收一个XML字符串,它实际上是REST请求到另一台服务器的输出,然后该字符串被写入一个文件,该文件不仅包含XML 问题是字符串作为一行XML接收,因此它存储为文件中的一行,没有缩进、制表符、格式等 我是否可以接收此XML流并在将其写入文件时对其进行格式化 注意:我不能在这里使用DOM,它必须在不将XML加载到内存的情况下实现。如果允许,您可以使用Transformer和SAX来实现:-Java 从InputStreamReader读取XML并将其写入文件,java,xml,parsing,xml-parsing,stream,Java,Xml,Parsing,Xml Parsing,Stream,我的代码从InputStreamReader接收一个XML字符串,它实际上是REST请求到另一台服务器的输出,然后该字符串被写入一个文件,该文件不仅包含XML 问题是字符串作为一行XML接收,因此它存储为文件中的一行,没有缩进、制表符、格式等 我是否可以接收此XML流并在将其写入文件时对其进行格式化 注意:我不能在这里使用DOM,它必须在不将XML加载到内存的情况下实现。如果允许,您可以使用Transformer和SAX来实现:- public static void prettyPrintXm
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);
}
作为字符串replaceAll,$0\r\n。对于缩进,需要更多。此外,对于某些标签,这可能不够。