我正在尝试使用 XPath 从 XBRL 文件(可扩展业务报告语言)中提取一些信息,该文件基本上只是一个 XML 文件。
该文件有多个命名空间声明,这些声明有时会因文件而异。
您能否帮助编写 XPath 以使用 C# 提取节点“dei:EntityRegistrantName”中的数据?
我在互联网上尝试了多篇文章,但无法弄清楚。
使用这个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>
只需使用 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();