在 Perl 中读取和解析 XBRL 文件(或转换为正常的 XML / JSON!)

Reading and parsing a XBRL file in Perl (or converting into normal XML / JSON!)

我对此一片空白。 XBRL 似乎基于 XML - 但似乎没有一致同意的结构。我正在从 http://download.companieshouse.gov.uk/en_monthlyaccountsdata.html 获取数据,我想将文件解析为可用数据

您应该如何处理 XBRL 文件并输出可用的数据结构?例如,我想查看去年 return.

的总营业额是多少

这一定是可以的,不然Company House提供数据有什么意义?

非常感谢任何指导!我觉得我要和这个一起兜兜转转

XBRL 遵循 XBRL 的 XBRL specifications, which are built on XML. Companies House uses the Inline XBRL (iXBRL) 变体,其中 XBRL 标签嵌入在 HTML 文档中。

说文档不遵循任何定义的结构是不准确的;他们遵循上述规范,并在 Companies House 收到后得到验证。

但是,Companies House 收集的 iXBRL 报告是财务报告,遵循适用的会计准则,会计准则允许每家公司报告的内容存在很大差异。

XBRL 中的数据通过将值(例如 1,000)与概念(例如“收入”)和某些维度(例如周期和单位)相关联来标记。

会计术语(例如“资产”、“收入”等)被定义为分类法中的概念。由于会计准则允许的变化,您可能会发现并非所有公司都会披露您正在寻找的概念。

就 Companies House 数据而言,由于许多较小的公司可以并且确实提交了不包含损益表的缩略账户,因此情况变得更加复杂,因此“营业额”通常不是报道。向 Companies House 提交 iXBRL 是可选的,许多公司选择通过纸质提交来降低其数据的可访问性。

就使数据更易于使用而言,我强烈建议使用现有的 XBRL 处理器,它不仅可以读取 iXBRL 报告,还可以读取相关的分类法。

使用最广泛的开源处理器是Arelle, and there are also many commercial processors available too (see https://software.xbrl.org)。

Arelle 将允许您通过 Python API 处理 XBRL 数据,或者可以将其转换为新的 xBRL-JSON 格式。