目标:给定文件,确定它是给定类型(XML、JSON、Properties等)中的哪一种。
考虑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 version="1.0" encoding="UTF-8"?>
字符串等等。
是否有其他方法来处理这个问题?
在文件内部看到什么内容,可以“怀疑它可能是XML,虽然捕获了异常”。这是为了解析的目的。
<\w+>
(可能是XML),多少"\w+"
(可能是JSON)与总标记数相比,否则可能是属性。 - harold