示例#1
0
        public static void ParseFacts(XDocument report, Instance instance)
        {
            var factElements = FindFacts(report);
            var facts        = new FactCollection(instance);

            foreach (var factElement in factElements)
            {
                var name     = factElement.Attribute("name").Value;
                var prefix   = name.Split(':').First();
                var ns       = report.Root.GetNamespaceOfPrefix(prefix).ToString();
                var unitRef  = factElement.Attribute("unitRef")?.Value;
                var decimals = factElement.Attribute("decimals")?.Value;
                var value    = factElement.Value;
                var scale    = factElement.Attribute("scale")?.Value;

                if (!string.IsNullOrWhiteSpace(scale))
                {
                    var power      = int.Parse(scale);
                    var v          = decimal.Parse(value.Replace(" ", ""));
                    var multiplier = (decimal)Math.Pow(10, power);
                    v    *= multiplier;
                    value = v.ToString();
                }

                var contextRef = factElement.Attribute("contextRef").Value;
                var fact       = new Fact(name, ns, unitRef, decimals, contextRef, value);
                facts.Add(fact);
            }
            foreach (var fact in facts)
            {
                instance.Facts.Add(fact);
            }
        }
示例#2
0
        internal void GetElementTree(FactCollection Facts, XmlElement[] value)
        {
            if (value != null)
            {
                foreach (var element in value)
                {
                    var fact = Fact.FromXmlElement(element);
                    Facts.Add(fact);

                    if (element.InnerXml != element.InnerText)
                    {
                        GetElementTree(fact.Facts, element.ChildNodes.Cast <XmlElement>().ToArray <XmlElement>());
                    }
                }
            }
        }