XBRL 文件的 XPath
XPath to XBRL files
我正在尝试使用 XPath 从 XBRL 文件(可扩展商业报告语言)中提取一些信息,该文件基本上只是一个 XML 文件。
该文件有多个命名空间声明,这些声明有时会因文件而异。
能否使用 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();
我正在尝试使用 XPath 从 XBRL 文件(可扩展商业报告语言)中提取一些信息,该文件基本上只是一个 XML 文件。
该文件有多个命名空间声明,这些声明有时会因文件而异。
能否使用 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();