[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