[jdom-interest] XMLOutputter(Format.getCompactFormat)

Lighton Phiri lighton.phiri at gmail.com
Wed Apr 11 02:40:08 PDT 2012


Hello,

I recently started playing around with JDOM (I am working with ) and
was trying to test XMLOutputter. For some strange reason, when I
attempt to write to an XML file using
XMLOutputter(Format.getCompactFormat), the code below only writes the
first sub-element of the root node. Substituting getCompactFormat with
the other formats (getPrettyFormat and getRawFormat) results in
desired output.

Could there be something I might be missing?

Input File

<?xml version="1.0" encoding="UTF-8" ?>
<people>
    <person>
        <firstname>Aaa</firstname>
        <lastname>Bbb</lastname>
        <age>20</age>
    </person>
    <person>
        <firstname>Ccc</firstname>
        <lastname>Ddd</lastname>
        <age>30</age>
    </person>
    <person>
        <firstname>Eee</firstname>
        <lastname>Fff</lastname>
        <age>40</age>
    </person>
    <person>
        <firstname>Ggg</firstname>
        <lastname>Hhh</lastname>
        <age>50</age>
    </person>
</people>

Output

<?xml version="1.0" encoding="UTF-8"?>
<people><person><firstname>Aaa</firstname></person></people>


Code

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

// jdom2 imports
import org.jdom2.Document;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

public class FirstRecipeJDOM {

    public static void main(String[] args) {
        File XMLFile = new File("file.xml");
        FileWriter JDOMRawOutputFile = null;
        SAXBuilder builder = new SAXBuilder();

        try {
            Document XMLDocument = builder.build(XMLFile);
            XMLOutputter XMLOutput = new
XMLOutputter(Format.getCompactFormat());
            XMLOutput.output(XMLDocument, System.out);

            JDOMRawOutputFile = new FileWriter(new File("jdom_recipes.xml"));
            XMLOutput.output(XMLDocument, JDOMRawOutputFile);
        }
        catch(IOException ioe) {
            System.out.println(ioe.getMessage());
        }
        catch(JDOMException jdome) {
            System.out.println(jdome.getMessage());
        }
    }
}

-- 
Phiri



More information about the jdom-interest mailing list