Цель: по файлу определить, относится ли он к заданному типу (XML, JSON, свойства и т. д.)
Рассмотрим случай с XML. До тех пор, пока мы не столкнулись с этой проблемой, следующий примерный подход работал нормально:
try {
saxReader.read(f);
} catch (DocumentException e) {
logger.warn(" - File is not XML: " + e.getMessage());
return false;
}
return true;
Как и ожидалось, если XML правильно сформирован, тест будет пройден, и метод вернет значение true. Если произойдет что-то плохое и файл не может быть проанализирован, будет возвращено значение false.
Однако это не работает, когда мы имеем дело с искаженным файлом XML (хотя все еще XML).
Я бы не стал полагаться на расширение .xml
(постоянно терпит неудачу), ища строка внутри файла и т. д.
Есть ли другой способ справиться с этим?
Что вы должны увидеть внутри файла, чтобы «заподозрить, что это может быть XML
, хотя DocumentException
было перехвачено». Это нужно для разбора.