仅创建XML打印到一行

我创建了一些将地图写入XML的代码。 它似乎工作但文件打印没有新行。 所以在任何XML编辑器中它只在一行上。 如何为每个孩子打印到新行?

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.newDocument(); Element vdata = doc.createElement("vouchdata"); doc.appendChild(vdata); for (Entry entry : vouchMap.entrySet()) { Element udata = doc.createElement("vouch"); Attr vouchee = doc.createAttribute("name"); vouchee.setValue(entry.getKey()); udata.setAttributeNode(vouchee); Attr voucher = doc.createAttribute("vouchedBy"); voucher.setValue(entry.getValue()); udata.setAttributeNode(voucher); vdata.appendChild(udata); } // write the content into xml file TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File("vouchdata.xml")); // Output to console for testing // StreamResult result = new StreamResult(System.out); transformer.transform(source, result); 

我用

 Transformer tf = TransformerFactory.newInstance().newTransformer(); tf.setOutputProperty(OutputKeys.INDENT, "yes"); tf.setOutputProperty(OutputKeys.METHOD, "xml"); tf.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); 

这似乎工作得很好。

如果是格式化生成的xml,那么请考虑答案

Java:将DOM写入XML文件(格式化问题)