[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xmlbeans-dev
Subject:    [jira] Resolved: (XMLBEANS-274) Over zealous whitespace cropping
From:       "Cezar Andrei (JIRA)" <xmlbeans-dev () xml ! apache ! org>
Date:       2006-07-20 21:47:28
Message-ID: 26450202.1153432048122.JavaMail.jira () brutus
[Download RAW message or body]

     [ http://issues.apache.org/jira/browse/XMLBEANS-274?page=all ]

Cezar Andrei resolved XMLBEANS-274.
-----------------------------------

    Fix Version/s: TBD
       Resolution: Fixed

The fix is a little bit more complicated, the CurLoadContext had to be modified to \
avoid leftStrip of consecutive text events.

> Over zealous whitespace cropping after parsing entity like &amp;
> ----------------------------------------------------------------
> 
> Key: XMLBEANS-274
> URL: http://issues.apache.org/jira/browse/XMLBEANS-274
> Project: XMLBeans
> Issue Type: Bug
> Affects Versions: Version 2.1
> Environment: All
> Reporter: Peter Rodgers
> Fix For: TBD
> 
> 
> When white space stripping is specified the parser does not detect XML entities \
> such as &amp; and strips the whitespace following each entity. For example
> <root>dog &amp; cat</root>
> is parsed as
> <root>dog &amp;cat</root>
> The cause of the problem is the stripLeft() method in the \
> org.apache.xmlbeans.impl.store.CharUtil Below is a fixed version of the method that \
> detects the ';' character after an entity which indicates that whitespace is \
> significant and must be preserved.  Note this code does not fix the case where the \
> iteration is a for loop. public Object stripLeft ( Object src, int off, int cch )
> {
> assert isValid( src, off, cch );
> if (cch > 0)
> {
> if (src instanceof char[])
> {
> char[] chars = (char[]) src;
> while ( cch > 0 && isWhiteSpace( chars[ off ] ) && chars[off - 1]!=';' )  //Fix for \
> &amp; etc { cch--; off++; }
> }
> else if (src instanceof String)
> {
> String s = (String) src;
> while ( cch > 0 && isWhiteSpace( s.charAt( off ) ) && s.charAt(off - 1)!=';' ) \
> //Fix for &amp; etc { cch--; off++; }
> }
> else
> {
> int count = 0;
> 
> for ( _charIter.init( src, off, cch ) ; _charIter.hasNext() ; count++ )
> if (!isWhiteSpace( _charIter.next() ))
> break;
> 
> _charIter.release();
> off += count;
> }
> }
> if (cch == 0)
> {
> _offSrc = 0;
> _cchSrc = 0;
> 
> return null;
> }
> _offSrc = off;
> _cchSrc = cch;
> return src;
> }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: \
                http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: dev-help@xmlbeans.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic