[jdom-interest] Fwd: Formatting differences after migrating to JDOM2

Robert Krüger krueger at lesspain.de
Mon Sep 30 06:43:44 PDT 2013


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
>>>
>>



More information about the jdom-interest mailing list