Sloppy XML parse exceptions now complain about the nearest upcoming non-whitespace character
This commit is contained in:
parent
0c324fa558
commit
3d109f1b20
1 changed files with 23 additions and 3 deletions
|
@ -200,7 +200,10 @@ public class SloppyXMLParser {
|
|||
am.region( am.end(), am.regionEnd() );
|
||||
}
|
||||
if ( am.regionStart() < attrString.length() ) {
|
||||
int[] lineAndCol = getLineAndCol( s, pos );
|
||||
int nonspacePos = findNextNonspace( s, pos );
|
||||
int errorPos = ( (nonspacePos != -1) ? nonspacePos : pos );
|
||||
|
||||
int[] lineAndCol = getLineAndCol( s, errorPos );
|
||||
int lineNum = lineAndCol[0];
|
||||
int colNum = lineAndCol[1];
|
||||
|
||||
|
@ -236,7 +239,10 @@ public class SloppyXMLParser {
|
|||
}
|
||||
|
||||
if ( !matchedChunk ) {
|
||||
int[] lineAndCol = getLineAndCol( s, pos );
|
||||
int nonspacePos = findNextNonspace( s, pos );
|
||||
int errorPos = ( (nonspacePos != -1) ? nonspacePos : pos );
|
||||
|
||||
int[] lineAndCol = getLineAndCol( s, errorPos );
|
||||
int lineNum = lineAndCol[0];
|
||||
int colNum = lineAndCol[1];
|
||||
|
||||
|
@ -304,10 +310,24 @@ public class SloppyXMLParser {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the position of the next non whitespace character after pos.
|
||||
*
|
||||
* Returns -1 if there isn't one.
|
||||
*/
|
||||
public int findNextNonspace( CharSequence s, int pos ) {
|
||||
Matcher nonspaceMatcher = Pattern.compile( "\\S" ).matcher( s );
|
||||
if ( nonspaceMatcher.find( pos ) )
|
||||
return nonspaceMatcher.start();
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns lineNum and colNum for a position in text.
|
||||
*/
|
||||
private int[] getLineAndCol( CharSequence s, int pos ) {
|
||||
public int[] getLineAndCol( CharSequence s, int pos ) {
|
||||
Matcher breakMatcher = Pattern.compile( "\n" ).matcher( s );
|
||||
breakMatcher.region( 0, pos+1 );
|
||||
int lastBreakPos = -1;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue