[jdom-interest] Formatting output

Nico Van Cleemput nicolas.vancleemput at ugent.be
Fri Apr 6 06:39:27 PDT 2007


Hi,

I have a question about formatting the output of an Document to a XML- 
file.

We have a set of xml-files that can be edited by the user and which  
contain a HTML-ish section, although it is still XML. (In a later  
phase these files are partially transformed to HTML, but that isn't  
so important for my question.) A slimmed down version of such a file  
may look like this:

<?xml version="1.0" encoding="UTF-8"?>
<!--

closure.xml

header

-->
<help>
   <page title="Closure" rootpath="../../../">
     <h1>Closure</h1>
     <p>
       The <b>closure</b> of a graph is the graph you get by adding  
an edge between two
       vertices if the sum of their degrees is greater than or equal  
to the order of the graph
       and doing this until no new edges can be added.
     </p>
     <graph name="classpath:/org/grinvin/help/graphbundles/ 
closuredemo1.gph" />
     <graph name="classpath:/org/grinvin/help/graphbundles/ 
closuredemo2.gph" />
     <p>A graph (left) and its closure (right).</p>
   </page>
</help>

Everything under the help node is parsed from the input from the user  
and the Document is then build as follows:
             Document doc = new Document();
             doc.addContent(new Comment(license));
             doc.setRootElement(root);

The variable license contains our header information and the variabe  
root contains the help node.

Next we use XMLOutputter to write this to a file. However here lies  
the problem. If we use pretty format we get this:

<?xml version="1.0" encoding="UTF-8"?>
<!--

closure.xml

header

-->
<help>
   <page title="Closure" rootpath="../../../">
     <h1>Closure</h1>
     <p>
       The
       <b>closure</b>
       of a graph is the graph you get by adding an edge between two
       vertices if the sum of their degrees is greater than or equal  
to the order of the graph
       and doing this until no new edges can be added.
     </p>
     <graph name="classpath:/org/grinvin/help/graphbundles/ 
closuredemo1.gph" />
     <graph name="classpath:/org/grinvin/help/graphbundles/ 
closuredemo2.gph" />
     <p>A graph (left) and its closure (right).</p>
   </page>
</help>

Notice how a new line is started for each tag (which is normally when  
using pretty format of course). This makes it quite impossible to  
fluently read and edit the content of the page-node. Especially if it  
contains many markup tags.

This was why we decided to use raw format since that will keep the  
layout the way it receives it. However, this gives the output:

<?xml version="1.0" encoding="UTF-8"?>
<!--

closure.xml

header

--><help>
   <page title="Closure" rootpath="../../../">
     <h1>Closure</h1>
     <p>
       The <b>closure</b> of a graph is the graph you get by adding  
an edge between two
       vertices if the sum of their degrees is greater than or equal  
to the order of the graph
       and doing this until no new edges can be added.
     </p>
     <graph name="classpath:/org/grinvin/help/graphbundles/ 
closuredemo1.gph" />
     <graph name="classpath:/org/grinvin/help/graphbundles/ 
closuredemo2.gph" />
     <p>A graph (left) and its closure (right).</p>
   </page>
</help>

And here is where my question comes in: I'm unable to let him start a  
new line for the help tag. How can this be achieved? The reason I  
want to have this on a new line is that we sometimes run a script  
when all the headers of old files need to be changed and this script  
replaces complete lines.

I hope I have explained the situation enough and any help is welcome.

Thanks in advance,
Nico Van Cleemput


More information about the jdom-interest mailing list