예제 #1
0
        internal XmlElement ToXmlElement()
        {
            var element = doc.CreateElement(Metric.Name, Metric.Namespace);

            if (Facts.Any())
            {
                element.AppendChildren(Facts.Select(f => f.ToXmlElement()));
            }
            else
            {
                if (Context != null)
                {
                    element.SetAttribute("contextRef", Context.Id);
                }

                if (Unit != null)
                {
                    element.SetAttribute("unitRef", Unit.Id);
                }

                if (!string.IsNullOrEmpty(Decimals))
                {
                    element.SetAttribute("decimals", Decimals);
                }

                element.InnerText = Value;
            }
            return(element);
        }
예제 #2
0
파일: Instance.cs 프로젝트: alastairR/Xoxo
        XmlSerializerNamespaces GetXmlSerializerNamespaces()
        {
            var usedDomains = GetUsedDomainNamespaces();

            var result = new XmlSerializerNamespaces();

            foreach (var item in Instance.DefaultNamespaces)
            {
                result.Add(item.Key, item.Value);
            }

            var foo = new List <string>();

            if (Facts.Any())
            {
                foo.Add(FactNamespace);
            }

            var scenarios = Contexts.Where(c => c.Scenario != null).Select(c => c.Scenario).ToList();

            if (scenarios.Any(s => s.TypedMembers.Any()))
            {
                foo.Add(DimensionNamespace);
                foo.Add(TypedDomainNamespace);
            }
            else if (scenarios.Any(s => s.ExplicitMembers.Any()))
            {
                foo.Add(DimensionNamespace);
            }

            var segments = Contexts.Where(c => c.Entity.Segment != null).Select(c => c.Entity.Segment).ToList();

            if (segments.Any(s => s.TypedMembers.Any()))
            {
                foo.Add(DimensionNamespace);
                foo.Add(TypedDomainNamespace);
            }
            else if (segments.Any(s => s.ExplicitMembers.Any()))
            {
                foo.Add(DimensionNamespace);
            }

            foreach (var item in foo)
            {
                if (!string.IsNullOrEmpty(item))
                {
                    var prefix = Namespaces.LookupPrefix(item);
                    result.Add(prefix, item);
                }
            }

            foreach (var item in usedDomains)
            {
                result.Add(Namespaces.LookupPrefix(item), item);
            }
            return(result);
        }