Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从InputStreamReader读取XML并将其写入文件_Java_Xml_Parsing_Xml Parsing_Stream - Fatal编程技术网

Java 从InputStreamReader读取XML并将其写入文件

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

我的代码从InputStreamReader接收一个XML字符串,它实际上是REST请求到另一台服务器的输出,然后该字符串被写入一个文件,该文件不仅包含XML

问题是字符串作为一行XML接收,因此它存储为文件中的一行,没有缩进、制表符、格式等

我是否可以接收此XML流并在将其写入文件时对其进行格式化

注意:我不能在这里使用DOM,它必须在不将XML加载到内存的情况下实现。

如果允许,您可以使用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);
}
作为字符串replaceAll,$0\r\n。对于缩进,需要更多。此外,对于某些标签,这可能不够。