Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » JDOM User »

Re: [jdom-interest] Formatting output

Jason Hunter

2007-04-06

Replies:

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@(protected)
>
_______________________________________________
To control your jdom-interest membership:
http://www.jdom.org/mailman/options/jdom-interest/youraddr@(protected)
©2008 junlu.com - Jax Systems, LLC, U.S.A.