识别 XBRL 文件

Identifying XBRL Documents

在阅读了有关 XBRL 验证的信息后,将其添加到正在进行的项目中将是一个很棒的功能。但是,由于性能限制,我无法将整个文档读入系统进行验证,因为可能会有大量文档流入系统进行处理,或者文档本身可能很大。

我想,也许通过读取文档的前几个字节,我们可以识别文档是否是 xbrl。假设在 xbrl 文档中,xbrl 的前几个字节(没有 xml 声明)将始终以 "xbrl" 或 "xbrli:xbrl"

开头

假设 XBRL 文档由文档的根标记定义为 "xbrl" 或 "xbrli:xbrl" 是否安全?或者有没有更好的方法来识别 xbrl 文档而无需解析整个文档?

谢谢!

这样假设是不安全的。不过,如果 95% 的命中率对你来说足够好,那就太好了。

如果您明确检查前缀,那几乎是 100% 安全的:

  1. 检查 xmlns:prefix="http://www.xbrl.org/2003/instance" 和根 <prefix:xbrl ...>
  2. 检查 xmlns="http://www.xbrl.org/2003/instance" 和根 <xbrl ...>

也许,您会找到一个有效的正则表达式来匹配它们。关键是,您不能假设前缀总是 none 或 xbrli.

安全的方法是使用 SAX 解析器(它不会解析整个文档)。参见这个问题的例子:Determine root Element during SAX parsing