XBRL 文件的 XPath

XPath to XBRL files

我正在尝试使用 XPath 从 XBRL 文件(可扩展商业报告语言)中提取一些信息,该文件基本上只是一个 XML 文件。

Here is an example file

该文件有多个命名空间声明,这些声明有时会因文件而异。

能否使用 C# 编写 XPath 来提取节点 "dei:EntityRegistrantName" 中的数据?

我已经尝试了互联网上的多篇文章,但无法弄明白。

利用这个XML Library,我使用了一个简单的元素获取。图书馆为我计算出命名空间:

XElement root = XElement.Load(file); // or .Parse(string)
var a = root.XPathElement("//dei:EntityRegistrantName");
Console.WriteLine(a.ToString());

输出为(为了便于阅读而格式化):

<dei:EntityRegistrantName 
    contextRef="eol_PE8528----1510-K0009_STD_365_20150630_0" 
    id="id_6568047_FBD9ABEE-63B9-43BD-B87B-EFE7CC59EFB0_1_400001"    
    xmlns:dei="http://xbrl.sec.gov/dei/2014-01-31">
    MICROSOFT CORPORATION
</dei:EntityRegistrantName>

只需使用 LINQ 提供的查询方法即可 XML:

var doc = XDocument.Load(file);

Namespace dei = "http://xbrl.sec.gov/dei/2014-01-31"

var name = (string)doc.Descendants(dei + "EntityRegistrantName").Single();