SAX API предоставляет довольно туманный механизм для этого - интерфейс org.xml.sax.Locator
.Когда вы используете SAX API, вы создаете подкласс DefaultHandler
и передаете его методам синтаксического анализа SAX, и предполагается, что реализация синтаксического анализатора SAX вводит Locator
в DefaultHandler
через setDocumentLocator()
.Когда синтаксический анализ продолжается, на вашем ContentHandler
вызываются различные методы обратного вызова (например, startElement()
), после чего вы можете обратиться к Locator
, чтобы узнать позицию анализа (через getColumnNumber()
и getLineNumber()
)
Технически, это необязательная функциональность, но javadoc говорит, что реализации «настоятельно рекомендуется» ее предоставлять, поэтому вы можете предположить, что синтаксический анализатор SAX, встроенный в JavaSE, это сделает.это означает использование SAX API, что ни для кого не является забавой, но я не вижу способа получить доступ к этой информации с помощью API более высокого уровня.
edit: Found this example .