[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