static int Main(string[] args) { // Check if a command line argument was specified if (args.Length == 0) { System.Console.WriteLine("Please specify an XBRL instance file."); return(1); } // Load XBRL instance into memory Altova.RaptorXml.ErrorLog log; var instance = Xbrl.Instance.CreateFromUrl(args[0], out log); // Check for validation errors if (instance == null || log.HasErrors) { // Report validation errors System.Console.WriteLine(String.Format("Failed to load XBRL instance file {0}.", args[0])); foreach (var error in log) { System.Console.WriteLine(error.Text); } return(1); } var concept = GetAssetsConcept(instance.Dts); if (concept == null) { System.Console.WriteLine("Taxonomy does not contain an Assets concept."); return(1); } // Find all US-GAAP Assets facts in the XBRL instance (filter instance facts by the concept aspect) var cs = new Xbrl.ConstraintSet(); cs.Concept = new Xbrl.ConceptAspectValue(concept); var facts = instance.Facts.Filter(cs); System.Console.WriteLine(String.Format("Found {0} Assets facts.", facts.Count)); foreach (Xbrl.Item fact in facts) { System.Console.WriteLine(String.Format("Assets fact in context {0} has the effective numeric value {1}.", fact.Context.Id, fact.EffectiveNumericValue)); } System.Console.WriteLine(); return(0); }
static int Main(string[] args) { // Check if a command line argument was specified if (args.Length == 0) { System.Console.WriteLine("Please specify an XBRL instance file."); return(1); } // Load XBRL instance into memory Altova.RaptorXml.ErrorLog log; var instance = Xbrl.Instance.CreateFromUrl(args[0], out log); // Check for validation errors if (instance == null || log.HasErrors) { // Report validation errors System.Console.WriteLine(String.Format("Failed to load XBRL instance file {0}.", args[0])); foreach (var error in log) { System.Console.WriteLine(error.Text); } return(1); } // Find all duplicate contexts var contextDict = new Dictionary <Xbrl.ConstraintSet, Xbrl.Context>(); foreach (var context in instance.Contexts) { var cs = new Xbrl.ConstraintSet(context); try { contextDict.Add(cs, context); } catch (ArgumentException) { System.Console.WriteLine(String.Format("Context {0} is a duplicate of context {1}.", context.Id, contextDict[cs].Id)); } } System.Console.WriteLine(); return(0); }
static int Main(string[] args) { // Check if a command line argument was specified if (args.Length == 0) { System.Console.WriteLine("Please specify an XBRL instance file."); return(1); } // Load XBRL instance into memory Altova.RaptorXml.ErrorLog log; var instance = Xbrl.Instance.CreateFromUrl(args[0], out log); // Check for validation errors if (instance == null || log.HasErrors) { // Report validation errors System.Console.WriteLine(String.Format("Failed to load XBRL instance file {0}.", args[0])); foreach (var error in log) { System.Console.WriteLine(error.Text); } return(1); } var assetsConcept = GetUsGaapConcept(instance.Dts, "Assets"); if (assetsConcept == null) { System.Console.WriteLine("Taxonomy does not contain an Assets concept."); return(1); } var liabilitiesConcept = GetUsGaapConcept(instance.Dts, "LiabilitiesAndStockholdersEquity"); if (liabilitiesConcept == null) { System.Console.WriteLine("Taxonomy does not contain an LiabilitiesAndStockholdersEquity concept."); return(1); } // Find all US-GAAP Assets facts in the XBRL instance (filter instance facts by the concept aspect) var cs = new Xbrl.ConstraintSet(); cs.Concept = new Xbrl.ConceptAspectValue(assetsConcept); var assetsFacts = instance.Facts.Filter(cs); foreach (Xbrl.Item assetsFact in assetsFacts) { // Find all instance facts that share the same aspect values as the current assetsFact apart from the concept aspect. cs = new Xbrl.ConstraintSet(assetsFact); cs.Concept = new Xbrl.ConceptAspectValue(liabilitiesConcept); var liabilitiesFacts = instance.Facts.Filter(cs); foreach (Xbrl.Item liabilitiesFact in liabilitiesFacts) { System.Console.WriteLine(String.Format("Assets fact in context {0} has the effective numeric value {1}.", assetsFact.Context.Id, assetsFact.EffectiveNumericValue)); System.Console.WriteLine(String.Format("LiabilitiesAndStockholdersEquity fact in context {0} has the effective numeric value {1}.", liabilitiesFact.Context.Id, liabilitiesFact.EffectiveNumericValue)); System.Console.WriteLine(); } } return(0); }