[jdom-interest] Fwd: Formatting differences after migrating to JDOM2
Rolf
jdom at tuis.net
Fri Oct 4 17:08:48 PDT 2013
Hi Robert.
Just so we are on the same page, when I run the code, I get the
following output:
with the setTextMode(...):
new
XMLOutputter(Format.getPrettyFormat().setTextMode(Format.TextMode.PRESERVE)).output(document,
System.out);
<?xml version="1.0" encoding="UTF-8"?>
<root>
<sub1>
<sub2>
Some text
</sub2><sub2>
text with left and right whitespace
</sub2>
</sub1>
</root>
without the setTextMode(...)
new XMLOutputter(Format.getPrettyFormat()).output(document,
System.out);
<?xml version="1.0" encoding="UTF-8"?>
<root>
<sub1>
<sub2>Some text</sub2>
<sub2>text with left and right whitespace</sub2>
</sub1>
</root>
The plain "Pretty" format is the way I think you want the output, and it
is right, right?
It is very unusual for someone ysing the PrettyFormat to modify the
TextMode.... I wonder why you have the setTextMode() at all...
Rolf
On 30/09/2013 9:43 AM, Robert Krüger wrote:
> forgot to reply to the list
>
>
> ---------- Forwarded message ----------
> From: Robert Krüger <krueger at lesspain.de>
> Date: Mon, Sep 30, 2013 at 3:42 PM
> Subject: Re: [jdom-interest] Formatting differences after migrating to JDOM2
> To: Rolf <jdom at tuis.net>
>
>
> This reproduces the behaviour:
>
> import org.jdom2.Document;
> import org.jdom2.Element;
> import org.jdom2.output.Format;
> import org.jdom2.output.XMLOutputter;
>
> public class JDOMOutput {
>
> public static void main(String argv[]) throws Exception{
> Document document = new Document();
> Element root = new Element("root");
> document.addContent(root);
> Element sub1 = new Element("sub1");
> root.addContent(sub1);
> sub1.addContent(new Element("sub2").setText("Some text"));
> sub1.addContent(new Element("sub2").setText(" text with left
> and right whitespace "));
> new XMLOutputter(Format.getPrettyFormat().setTextMode(Format.TextMode.PRESERVE)).output(document,
> System.out);
> }
>
> }
>
> Try with and without the setTextMode(Format.TextMode.PRESERVE). None
> of them does what I need.
>
> On Sun, Sep 29, 2013 at 7:10 PM, Robert Krüger <krueger at lesspain.de> wrote:
>> Hi,
>>
>> it is part of a large application. I will try to build a simple test
>> program that demonstrates the effect.
>>
>> Cheers,
>>
>> Robert
>>
>> On Sun, Sep 29, 2013 at 5:26 PM, Rolf <jdom at tuis.net> wrote:
>>> Hi Robert.
>>>
>>> This is surprising indeed, and I agree it should not be different from JDOM
>>> 1.x
>>>
>>> Can you get me a copy of the input file and the relevant parts of Java code?
>>> You don't need to CC the whole list it is large...
>>>
>>> Thanks
>>>
>>> Rolf
>>>
>>>
>>> On 29/09/2013 10:42 AM, Robert Krüger wrote:
>>>> Hi,
>>>>
>>>> I just migrated my code to from JDOM to JDOM2 and noticed some of our
>>>> unit tests failed. The reason is different formatting. I used
>>>> Format.getPrettyFormat().setTextMode(PRESERVE) for the formatting and
>>>> with jdom this produced output like the following
>>>>
>>>> <av-container format-version="0.3.4">
>>>> <container-format>MP4</container-format>
>>>> <bitrate>646448</bitrate>
>>>> <duration>2002002</duration>
>>>> <start-time>0</start-time>
>>>> <acquisition-timestamp>1340887741000</acquisition-timestamp>
>>>> <stream>
>>>> <type>VIDEO</type>
>>>> <codec>H.264</codec>
>>>> ...
>>>>
>>>> after replacing the imports by jdom2 I got
>>>>
>>>> <av-container format-version="0.3.4">
>>>> <container-format>
>>>> MP4
>>>> </container-format><bitrate>
>>>> 646448
>>>> </bitrate><duration>
>>>> 2002002
>>>> </duration><start-time>
>>>> 0
>>>> </start-time><acquisition-timestamp>
>>>> 1340887741000
>>>> </acquisition-timestamp><stream>
>>>> <type>
>>>> VIDEO
>>>> </type><codec>
>>>> H.264
>>>> </codec>...
>>>>
>>>> This looks rather broken as it does not preserve the original data at
>>>> all with all those added newlines. Removing the setTextMode(PRESERVE)
>>>> restored the format to what is shown above but the reason I added
>>>> setTextMode(PRESERVE) was that without it, whitespace was trimmed and
>>>> I do not want that for elements with text content.
>>>>
>>>> Is this a bug? How can I achieve what I want, i.e. have a "pretty",
>>>> i.e. indented format and have text-only elements preserve whitespace?
>>>>
>>>> Thanks in advance,
>>>>
>>>> Robert
>>>> _______________________________________________
>>>> To control your jdom-interest membership:
>>>> http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com
>>>>
> _______________________________________________
> 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