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); }
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); }