java - 阅读 XBRL 事实 - Java

标签 java xml xpath xbrl

我需要从 SEC 10-K 文件中获取一些事实,例如毛收入、毛利润、毛利率、营业费用等以及相应的上下文。

对于像 https://www.sec.gov/Archives/edgar/data/1318605/000156459018002956/tsla-20171231.xml 这样的文件, 仅使用 XPath 找出少数必需的元素和值似乎是可行的。 但是有像 ( https://www.sec.gov/Archives/edgar/data/19617/000001961718000057/jpm-20171231.xml ) 这样的文件,其中总费用被分解为具有扩展分类法的不同部分。

我的问题是

  1. 处理此类文件的可靠方法是什么?比如说,如果我只想要总运营支出。有没有一种可靠的方法可以找到我需要阅读的元素,然后可以对其进行总结?
  2. 我试过使用 UBMatrix 库读取 xbrl 文件。它适用于某些文件(非 SEC,可以读取节点值)但对于 SEC 10-K 文件会抛出 NPE。 SEC 的 xbrls 实例文档失败是否有特殊原因? (虽然还没有检查库代码)

无论如何,如果仅使用 XPath 可以做到这一点,我会更愿意这样做。 xbrl 文档的有效性并不重要。

最佳答案

处理 XBRL 文件的最可靠方法是使用 XBRL 处理库。有一些是用 Java 编写的,一些是专有的(收费),一些是开源的。

xbrl.org 上有一个维护的工具和服务列表:

https://www.xbrl.org/the-standard/how/tools-and-services/

据我所知,SEC 文档是可靠的,被很多人广泛使用并在许多处理器上进行了测试。如果 UBMatrix 存在问题,例如空指针异常,我建议联系他们并让他们知道,以便他们解决问题。

肯定(理论上)也可以使用 XPath/XQuery/XSLT,因为 XBRL 使用 XML 语法,但您需要注意,通过解析上下文(这是关系术语中的连接),您会实际上是从头开始重新实现一个不完整的 XBRL 处理器,伴随着错误和沉没成本的风险。除了核心的 XBRL 规范(例如维度等)之外,还有许多微妙之处和规范生态系统需要考虑,以免检索到错误的值。通过使用现有的处理器,您是在其他人已经为此付出的努力的基础上进行构建,以便获得正确的所有 XBRL 语义:这是 XBRL 成为标准的好处。

最后一点:用于毛收入、毛利润等的确切 XBRL 标签可能因公司而异,因为有些公司使用自己的标签(扩展名)而不是 US-GAAP 标签。此外,一些公司省略了一些需要消费者根据其他事实计算的事实。这可以在 XBRL 处理器之上使用映射和公式来解决。查尔斯·霍夫曼 (Charles Hoffman) 分享了有关此事的报告,并提供了许多有用的建议,并在线维护此类映射(搜索关键字是:基本会计概念、报告框架)。

关于java - 阅读 XBRL 事实 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53418970/

相关文章:

java: 不能在抽象类中使用构造函数

java - 无法选择容器

java - 如何在执行 Object object = new Object() 时注入(inject)依赖项

android - 禁用 EditText 的可编辑性和焦点(如 TextView)

windows - WiX XmlFile ElementPath 多个结果

java - JSON 响应被分成多行的原因可能是什么?

java - 尝试使用以 XML 和 HTTP 编码的请求和响应检索数据时,从哪里开始是协议(protocol)

css - 以下 html 片段需要 xpath 或 css

css - 用于 Firefox 或 Chrome 的 Xpath 或 CSS 生成器

regex - XSLT 2.0 : Transform notation in plain text to svg