Creating XML only printing to one line

11,757

I use

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");

Which seems to work just fine.

Share:
11,757
meriley
Author by

meriley

Updated on July 29, 2022

Comments

  • meriley
    meriley over 1 year

    I created some code that writes a map to XML. It appears to be working but the file is printed with no new lines. So in any XML editor its only on one line. How can I have it print to a new line for each child?

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document doc = db.newDocument();
    
    Element vdata = doc.createElement("vouchdata");
    doc.appendChild(vdata);
    
    for (Entry<String, String> 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);
    
  • MadProgrammer
    MadProgrammer almost 10 years
    @Tony This little hack to me weeks for Googling and trial and error. Glad I saved you the hasel ;)
  • qraqatit
    qraqatit almost 4 years
    Perfect: it helped me so much after half a day trying to find out what is wrong with my XML output (long one line only) - this solved it, upvoted!