Вы должны использовать SAXParseException , чтобы получить больше ошибок, или SAX locator , если вы реализуете ContentHandler, и, возможно, лексер. Исключение даст вам подробную информацию об ошибке, номер строки.
try{
...
}
catch(SAXParseException e){
int lineNumber = e.getLineNumber();
int columnNumber = e.getColumnNumber();
String message = e.getMessage();
// do something
}
catch(SAXException e){
// what should we do?
// if we're implementing ContentHandler
// we can use the org.xml.sax.Locator to get more info
}
Обычно информация столбца из локатора возвращает -1 . Для точности смещения вам придется использовать расширенный ContentHandler или лексер:
- Получить номер строки ошибки
- Оцените положение узла с помощью информации о строке, атрибутов (начальный тег, конечный тег), используя лексер или регулярные выражения или что-то еще.