2015-09-08 6 views
0

Я пытаюсь извлечь некоторую информацию с помощью XPath из файла XBRL (расширяемый бизнес-отчет), который в основном представляет собой только XML-файл.XPath to XBRL files

Here is an example file

Файл содержит несколько объявлений пространств имен, и эти заявления изменить из файла в файл, иногда.

Не могли бы вы помочь написать XPath для извлечения данных в узле «dei: EntityRegistrantName», используя C#?

Я пробовал несколько статей в Интернете, но не могу понять это.

ответ

1

Используя это XML Library, я использую простой элемент get. Цифры библиотеки из пространства имен для меня:

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> 
+0

Это классная библиотека. Однако могу ли я получить все узлы, которые соответствуют пути? – ViV

+0

расширение XPath, получает все узлы. Где 'XPathElement' возвращает первый найденный элемент, который соответствует поиску. –

0

Просто использовать методы запроса, доступные вам с 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();