【发布时间】:2012-04-02 01:47:33
【问题描述】:
目标:给定文件,确定它是否属于给定类型(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 version="1.0" encoding="UTF-8"?> 字符串等。
还有其他方法可以处理吗?
您必须在文件中看到什么才能“怀疑它可能是 XML,尽管 DocumentException 已被捕获”。这是解析目的所必需的。
【问题讨论】:
-
对于“它是什么类型的文件?”,您无法得到明确的答案,只能回答“我可以假装它是 X 类型的吗?” (对零个或多个 X 的答案可以是“是”,而不仅仅是零或一)。但是您可以输入统计数据,看看与令牌总数相比是否有很多
<\w+>(可能是 XML)、很多"\w+"(可能是 JSON),否则可能是属性。