Пример #1
0
        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);
        }
Пример #2
0
        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);
        }