0

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

这是一个示例文件

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

您能否帮助编写 XPath 以使用 C# 提取节点“dei:EntityRegistrantName”中的数据?

我在互联网上尝试了多篇文章,但无法弄清楚。

4

2 回答 2

1

使用这个XML 库,我使用了一个简单的元素获取。该库为我找出了命名空间:

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>
于 2015-09-08T18:24:17.503 回答
0

只需使用 LINQ to XML 为您提供的查询方法:

var doc = XDocument.Load(file);

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

var name = (string)doc.Descendants(dei + "EntityRegistrantName").Single();
于 2015-09-09T06:33:48.653 回答