示例#1
0
        public IEnumerable Select(MFQueryKind kind, object query)
        {
            switch (kind)
            {
            case MFQueryKind.All:
            case MFQueryKind.AllChildren:
                return(new MFNodeByKindFilter(children, MFNodeKind.Text));

            case MFQueryKind.AllAttributes:
            case MFQueryKind.AttributeByQName:
                return(MFEmptySequence.Instance);

            case MFQueryKind.ChildrenByQName:
                return(MFEmptySequence.Instance);

            case MFQueryKind.SelfByQName:
                if (localName == ((System.Xml.XmlQualifiedName)query).Name &&
                    namespaceURI == ((System.Xml.XmlQualifiedName)query).Namespace)
                {
                    return(new MFSingletonSequence(this));
                }
                else
                {
                    return(MFEmptySequence.Instance);
                }

            default:
                throw new InvalidOperationException("Unsupported query type.");
            }
        }
示例#2
0
        public IEnumerable Select(MFQueryKind kind, object query)
        {
            switch (kind)
            {
            case MFQueryKind.All:
            case MFQueryKind.AllChildren:
                return(new MFNodeByKindFilter(children, MFNodeKind.Text));

            case MFQueryKind.AttributeByQName:
                return(MFEmptySequence.Instance);

            case MFQueryKind.ChildrenByQName:
                return(MFEmptySequence.Instance);

            case MFQueryKind.SelfByQName:
                return(MFEmptySequence.Instance);

            default:
                throw new InvalidOperationException("Unsupported query type.");
            }
        }
示例#3
0
            public IEnumerable Select(MFQueryKind kind, object query)
            {
                switch (kind)
                {
                case MFQueryKind.All:
                case MFQueryKind.AllChildren:
                case MFQueryKind.ChildrenByQName:
                case MFQueryKind.SelfByQName:
                    return(MFEmptySequence.Instance);

                case MFQueryKind.AttributeByQName:
                    if (dictionary.ContainsKey(((System.Xml.XmlQualifiedName)query).Name))
                    {
                        return(new MFSingletonSequence(dictionary[((System.Xml.XmlQualifiedName)query).Name]));
                    }
                    return(MFEmptySequence.Instance);

                default:
                    throw new InvalidOperationException("Unsupported query type.");
                }
            }
示例#4
0
        public IEnumerable Select(MFQueryKind kind, object query)
        {
            switch (kind)
            {
            case MFQueryKind.All:
                switch (node.NodeType)
                {
                case XmlNodeType.Element:
                    return(new SequenceJoin(new DOMChildrenAsMFNodeSequenceAdapter(node), new DOMAttributesAsMFNodeSequenceAdapter(node)));

                case XmlNodeType.Document:
                    return(new DOMChildrenAsMFNodeSequenceAdapter(node));

                case XmlNodeType.Attribute:
                    return(new MFSingletonSequence(node.Value));

                case XmlNodeType.Text:
                case XmlNodeType.SignificantWhitespace:
                case XmlNodeType.CDATA:
                    return(new MFSingletonSequence(node.Value));

                default:
                    return(MFEmptySequence.Instance);
                }

            case MFQueryKind.AllChildren:
                switch (node.NodeType)
                {
                case XmlNodeType.Element:
                case XmlNodeType.Document:
                    return(new DOMChildrenAsMFNodeSequenceAdapter(node));

                case XmlNodeType.Attribute:
                    return(new MFSingletonSequence(node.Value));

                case XmlNodeType.Text:
                case XmlNodeType.SignificantWhitespace:
                case XmlNodeType.CDATA:
                    return(new MFSingletonSequence(node.Value));

                default:
                    return(MFEmptySequence.Instance);
                }

            case MFQueryKind.AllAttributes:
                switch (node.NodeType)
                {
                case XmlNodeType.Element:
                case XmlNodeType.Document:
                    return(new DOMAttributesAsMFNodeSequenceAdapter(node));

                default:
                    return(MFEmptySequence.Instance);
                }

            case MFQueryKind.ChildrenByQName:
                switch (node.NodeType)
                {
                case XmlNodeType.Element:
                case XmlNodeType.Document:
                    return(new MFNodeByKindAndQNameFilter(new DOMChildrenAsMFNodeSequenceAdapter(node), MFNodeKind.Children, ((XmlQualifiedName)query).Name, ((XmlQualifiedName)query).Namespace));

                default:
                    return(MFEmptySequence.Instance);
                }

            case MFQueryKind.SelfByQName:
                switch (node.NodeType)
                {
                case XmlNodeType.Element:
                case XmlNodeType.Attribute:
                    if (node.LocalName == ((XmlQualifiedName)query).Name &&
                        node.NamespaceURI == ((XmlQualifiedName)query).Namespace)
                    {
                        return(new MFSingletonSequence(this));
                    }
                    else
                    {
                        return(MFEmptySequence.Instance);
                    }

                default:
                    return(MFEmptySequence.Instance);
                }

            case MFQueryKind.AttributeByQName:
                switch (node.NodeType)
                {
                case XmlNodeType.Element:
                {
                    XmlAttribute att = node.Attributes[((XmlQualifiedName)query).Name, ((XmlQualifiedName)query).Namespace];
                    if (att != null)
                    {
                        return(new MFSingletonSequence(new DOMNodeAsMFNodeAdapter(att)));
                    }
                    else
                    {
                        return(MFEmptySequence.Instance);
                    }
                }

                default:
                    return(MFEmptySequence.Instance);
                }


            default:
                throw new InvalidOperationException("Unsupported query type.");
            }
        }
示例#5
0
 public IEnumerable Select(MFQueryKind kind, object query)
 {
     throw new InvalidOperationException("Unsupported selection.");
 }