[jdom-interest] Formatting output

Jason Hunter jhunter at servlets.com
Fri Apr 6 11:54:48 PDT 2007


Whitespace outside the root element is inconsequential in the XML data 
model.  So this wouldn't matter except you're using a script that isn't 
really XML aware, and that's why it hasn't been added as a feature.

Two ideas that jump to mind:

* Subclass XMLOutputter

* Output the document in two parts and add a newline yourself in between 
the two parts

-jh-

Nico Van Cleemput wrote:
> 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
> _______________________________________________
> To control your jdom-interest membership:
> http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com
> 


More information about the jdom-interest mailing list