将XML格式保存为字符串而不是文件

我使用DocumentBuilderFactory来创建XML文件,如下所示: 如何在Java中创建具有特定结构的XML文件 。

我想将结果存储为java String,而不是将其保存到文件中。 如何实现这一目标。

重复: 如何将org.w3c.dom.Document对象转换为String?

这个例子可以帮到你。

import java.io.StringWriter; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; public class DOMBasicDoc { public static void main(String args[]) { try { String[] input = {"John Doe,123-456-7890", "Bob Smith,123-555-1212"}; String[] line = new String[2]; DocumentBuilderFactory dFact = DocumentBuilderFactory.newInstance(); DocumentBuilder build = dFact.newDocumentBuilder(); Document doc = build.newDocument(); Element root = doc.createElement("root"); doc.appendChild(root); Element memberList = doc.createElement("members"); root.appendChild(memberList); for (int i = 0; i < input.length; i++) { line = input[i].split(","); Element member = doc.createElement("member"); memberList.appendChild(member); Element name = doc.createElement("name"); name.appendChild(doc.createTextNode(line[0])); member.appendChild(name); Element phone = doc.createElement("phone"); phone.appendChild(doc.createTextNode(line[1])); member.appendChild(phone); } TransformerFactory tFact = TransformerFactory.newInstance(); Transformer trans = tFact.newTransformer(); StringWriter writer = new StringWriter(); StreamResult result = new StreamResult(writer); DOMSource source = new DOMSource(doc); trans.transform(source, result); System.out.println(writer.toString()); } catch (TransformerException ex) { System.out.println("Error outputting document"); } catch (ParserConfigurationException ex) { System.out.println("Error building document"); } } } 

我建议您阅读有关I / O Streams的Java 文档 。 特别是字符流部分谈论ReaderWriter类。

正如您在XMLOutputter JavaDoc中看到的那样,方法output采用不同的参数。 您只需选择approriate Writer,而不是FileWriter使用StringWriter作为示例。

但是, XMLOutputter还有outputString()方法,可以让您在内部(可能)直接生成一个String。