<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.0.9">
</HEAD>
<BODY>
Have you tried 1) having an XSD that indicates where whitespace is not ignorable and 2) calling SAXBuilder#setIgnoringElementContentWhitespace(true)?<BR>
<BR>
By doing both of these you give the (XERCES) parser the chance to determine what whitespace is ignorable and the SAXBuilder the ability to correctly ignore ignorable whitespace...<BR>
<BR>
Phil :n)<BR>
<BR>
On Thu, 2004-01-15 at 23:40, Beleznay, Dave wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE><FONT COLOR="#737373"><I>Hi There,

We've recently upgraded from Jdom b8 to b9, and had a few errors in the
upgrade process.

If I have an XML document like so:

        String xml = 
            &quot;&lt;enterprise&gt;\n&quot;+
            &quot;&lt;properties&gt;\n&quot;+
            &quot;    &lt;datasource&gt;WebCT&lt;/datasource&gt;\n&quot;+
            &quot;    &lt;type&gt;  Migration&lt;/type&gt;\n&quot;+
            &quot;    &lt;datetime&gt;2002-06-06T14:59:05&lt;/datetime&gt;\n&quot;+
            &quot;&lt;/properties&gt;\n&quot;+
            &quot;&lt;/enterprise&gt;\n&quot;;

Where the spaces in front of &lt;datasource&gt; are not relevant, but the
spaces inside the elements (e.g. &lt;type&gt;) are relevant (this is just a
fragment of a larger bit of XML, it isn't really the &lt;type&gt; field that
matters here). When I put the document into Jdom, I get different
behaviour between Jdom b8 and b9.  I'd like to know the expected
behaviour, and if it doesn't match my desired behaviour, approximately
how I'm supposed to fix my code.  


Using the string above and the following code in Jdom b8  I get the
output below.

        SAXBuilder builder = new SAXBuilder();
        Document doc = builder.build(new StringReader(xml));
        
        XMLOutputter xmlOutputter = new XMLOutputter(&quot;\t&quot;, true);
        xmlOutputter.setOmitDeclaration(true);
        xmlOutputter.setLineSeparator(&quot;\n&quot;);
        //xmlOutputter.setTextTrim(true);
        String output = xmlOutputter.outputString(doc.getRootElement());
        System.out.println(output);

Desired output ( and output received from b8):

output=
&quot;&lt;enterprise&gt;\n\t&lt;properties&gt;\n\t\t&lt;datasource&gt;WebCT&lt;/datasource&gt;\n\t\t&lt;
type&gt;
Migration&lt;/type&gt;\n\t\t&lt;datetime&gt;2002-06-06T14:59:05&lt;/datetime&gt;\n\t&lt;/prop
erties&gt;\n&lt;/enterprise&gt;&quot;


When we upgraded to Jdom b9 we were in for a little bit of a surprise. 

Output from b9 without TextTrim:

output= &quot;&lt;enterprise&gt;\n\t\n\n\t&lt;properties&gt;\n\t\t\n
\n\t\t&lt;datasource&gt;WebCT&lt;/datasource&gt;\n\t\t\n    \n\t\t&lt;type&gt;
Migration&lt;/type&gt;\n\t\t\n
\n\t\t&lt;datetime&gt;2002-06-06T14:59:05&lt;/datetime&gt;\n\t\t\n\n\t&lt;/properties&gt;\
n\t\n\n&lt;/enterprise&gt;&quot;

Output from b9 with TextTrim:

output=
&quot;&lt;enterprise&gt;\n\t&lt;properties&gt;\n\t\t&lt;datasource&gt;WebCT&lt;/datasource&gt;\n\t\t&lt;
type&gt;Migration&lt;/type&gt;\n\t\t&lt;datetime&gt;2002-06-06T14:59:05&lt;/datetime&gt;\n\t&lt;
/properties&gt;\n&lt;/enterprise&gt;&quot;

(this is close, but took the spaces out before &quot;   Migration&quot; ) 

Unfortunately the code farther down the line (not using jdom) which is
analyzing the xml has problems with the string  &quot;\n\t\t\n
\n\t\t&lt;datasource&gt;WebCT&lt;datasource&gt;&quot; and interprets the value as &quot;
WebCT&quot;. I'm not happy with that either, but right now it's easier to fix
the behaviour of Jdom.

It looks like this was changed XMLOutputter 1.87, and I'm trying to
figure out why.  I'd like to remove the whitespace outside the elements,
while preserving the whitespace inside.  As a temporary measure I've
added the check for currentFormat.newlines back to our skipLeadingWhite
method in XMLOutputter, but I'd like a more permanent solution.  

Thank you very much.

Cheers,

Dav

--
David Beleznay
Software Engineer
WebCT
_______________________________________________
To control your jdom-interest membership:</FONT>
<A HREF="http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhost.com"><U>http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhost.com</U></I></A></PRE>
</BLOCKQUOTE>
<PRE><TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
-- <BR>
Phil Weighill-Smith &lt;<A HREF="mailto:phil.weighill-smith@volantis.com"><U>phil.weighill-smith@volantis.com</U></A>&gt;<BR>
Volantis Systems
</TD>
</TR>
</TABLE>
</PRE>
</BODY>
</HTML>