Привет @eakbas и @Favonius Спасибо за ваш ответ.Я наконец-то получил решение, возможно, оно не самое лучшее, но, по крайней мере, работает для меня.Как я упоминал ранее, я использовал библиотеку флейты для реализации класса DocumentHandler пакета org.w3c.sac для анализа файла css.Итак, я реализовал метод 'property', у этого метода есть 3 параметра, имя свойства, объект LexicalUnit и логическое значение, указывающее, что свойство имеет важный оператор или нет.
public void property(String property, LexicalUnit lexicalUnit, boolean important)
Поскольку мне нужна строкачисло, где определенное свойство найдено, я сделал поиск, и я мог видеть, что класс, который флейта использует для реализации интерфейса LexicalUnit, содержит номер строки (это LexicalUnitImp), поэтому я использовал рефлексию, чтобы сделать приведение из интерфейса LexicalUnit к одномуОбъект LexicalUnitImp.
Class<?> clazz = ClassUtils.getClass("org.w3c.flute.parser.LexicalUnitImpl");
Object lexicalObject = clazz.cast(lexicalUnit);
Integer line = (Integer)MethodUtils.invokeMethod(lexicalObject, "getLineNumber", null, null);
Я сделал это таким образом, потому что класс LexicalUnitImpl является «защищенным», и я не могу привести его традиционным способом.
class LexicalUnitImpl implements LexicalUnit
Примечание: класс ClassUtilsи MethodUtils являются частью библиотеки Apache commons-beanutils.