将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 文档 。 特别是字符流部分谈论Reader
和Writer
类。
正如您在XMLOutputter
JavaDoc中看到的那样,方法output
采用不同的参数。 您只需选择approriate Writer,而不是FileWriter
使用StringWriter
作为示例。
但是, XMLOutputter
还有outputString()
方法,可以让您在内部(可能)直接生成一个String。