private static IEnumerable <object> CreateValues(XElement element, XamlNamespaces namespaces, XamlNamespaces ignorableNamespaces, Uri sourceUri) { List <object> values = new List <object>(); foreach (XNode value in element.Nodes()) { XText valueText = value as XText; if (valueText != null) { values.Add(valueText.Value.Trim()); } XElement valueElement = value as XElement; if (valueElement != null) { if (!IsValueName(valueElement.Name)) { continue; } XamlNamespaces valueNamespaces = namespaces.Merge(GetNamespaces(valueElement)); XamlNamespaces valueIgnorableNamespaces = ignorableNamespaces.Merge(GetIgnorableNamespaces(valueElement, valueNamespaces)); if (IsIgnorable(valueElement.Name, valueIgnorableNamespaces)) { continue; } values.Add(CreateXamlElement(valueElement, valueNamespaces, valueIgnorableNamespaces, sourceUri)); } } return(values); }
private static IEnumerable <XamlMember> CreateXamlMembers(XElement element, XamlNamespaces namespaces, XamlNamespaces ignorableNamespaces, Uri sourceUri) { List <XamlMember> members = new List <XamlMember>(element.Attributes().Where(attribute => !IsDirective(attribute.Name) && !attribute.IsNamespaceDeclaration && !IsIgnorableAttribute(attribute) && !IsIgnorable(attribute.Name, ignorableNamespaces)).Select(attribute => CreateXamlMember(attribute, namespaces, ignorableNamespaces, sourceUri))); foreach (XElement memberElement in element.Elements()) { if (!IsMemberName(memberElement.Name)) { continue; } XamlNamespaces memberNamespaces = namespaces.Merge(GetNamespaces(memberElement)); XamlNamespaces memberIgnorableNamespaces = ignorableNamespaces.Merge(GetIgnorableNamespaces(memberElement, memberNamespaces)); if (IsIgnorable(memberElement.Name, memberIgnorableNamespaces)) { continue; } members.Add(CreateXamlMember(memberElement, memberNamespaces, memberIgnorableNamespaces, sourceUri)); } return(members); }