如何将流结果转换为字符串
Posted
技术标签:
【中文标题】如何将流结果转换为字符串【英文标题】:How to convert stream results to string 【发布时间】:2012-10-24 10:27:39 【问题描述】:我想将流结果输出转换为字符串,因为我想要 在 Junit 中使用它我认为我需要使用字符串编写器但是 我不确定如何使用它。
StreamResult result = new StreamResult(new File("C:\\file.xml"));
transformer.transform(source, result);
谢谢 费多尔
【问题讨论】:
【参考方案1】:查看并学习使用 StreamResult 类的 javadocs (http://java.sun.com/javase/6/docs/api/)。 StreamResult 的构造函数之一将 Writer 对象作为参数。您将看到 Writer 的子类之一是 StringWriter。因此,要从写入 StreamResult 的内容中获取字符串,可以构造一个 StringWriter,将其放入 StreamResult,将 Source 转换()到 StreamResult,然后从 StringWriter 中获取字符串。
//create a StringWriter for the output
StringWriter outWriter = new StringWriter();
StreamResult result = new StreamResult( outWriter );
...
transformer.transform( source, result );
StringBuffer sb = outWriter.getBuffer();
String finalstring = sb.toString();
【讨论】:
你好 Timo,谢谢,但我应该把转换器放在哪里 StreamResult result = new StreamResult(new File("C:\\file.xml")); 好吧,您可以使用 StreamResult result = new StreamResult(new File("C:\\file.xml")); 将结果放入文件中。或者您使用 StreamResult result = new StreamResult(outWriter); 将其放入 StringWriter如果你想在字符串中使用文件,为什么要使用它? “来源”代表什么? 我猜source
是正在转换的 XML。【参考方案2】:
StringWriter writer = new StringWriter();
transformer.transform(source, new StreamResult(writer));
String output = writer.toString();
【讨论】:
【参考方案3】:您可以通过这种方式使用StringWriter:
StringWriter sw = (StringWriter) result.getWriter();
StringBuffer sb = sw.getBuffer();
String finalstring = sb.toString();
【讨论】:
这是我要找的那个 使用缓冲区和不使用缓冲区有什么区别,就像在@nosid 回答中一样?以上是关于如何将流结果转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Java 中将 InputStream 转换为字符串?
如何在 Java 中将 InputStream 转换为字符串?