[jdom-interest] Formatting differences after migrating to JDOM2

Robert Krüger krueger at lesspain.de
Sun Sep 29 07:42:54 PDT 2013


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


More information about the jdom-interest mailing list