Exemplo n.º 1
0
        private void _InitQueryables(XPathQueryableNavigator navigator, IDictionary<string, IList<XPathNavigator>> queryables, IDictionary<XName, XPathQueryableNode> visited)
        {
            visited.Add(XName.Get(LocalName, Namespace), this);

            var subNodes=new List<XPathTypeNode>(ElementChildrenNodes);
            subNodes.AddRange(AttributeChildrenNodes);
            subNodes.AddRange(IgnoredChildrenNodes);

            foreach (XPathTypeNode xptn in subNodes)
            {
                var xpqn=xptn as XPathQueryableNode;
                if ((xpqn!=null) && !visited.ContainsKey(XName.Get(xpqn.LocalName, xpqn.Namespace)))
                    xpqn._InitQueryables(navigator, queryables, visited);
            }

            foreach (CswQueryable cq in AssociatedQueryables)
            {
                if (!queryables.ContainsKey(cq.Name))
                    queryables.Add(cq.Name, new List<XPathNavigator>());

                var n=(XPathQueryableNavigator)navigator.Clone();
                n.MoveTo(this);
                queryables[cq.Name].Add(n);
            }
        }
Exemplo n.º 2
0
        private void _InitQueryables(XPathQueryableNavigator navigator, IDictionary <string, IList <XPathNavigator> > queryables, IDictionary <XName, XPathQueryableNode> visited)
        {
            visited.Add(XName.Get(LocalName, Namespace), this);

            var subNodes = new List <XPathTypeNode>(ElementChildrenNodes);

            subNodes.AddRange(AttributeChildrenNodes);
            subNodes.AddRange(IgnoredChildrenNodes);

            foreach (XPathTypeNode xptn in subNodes)
            {
                var xpqn = xptn as XPathQueryableNode;
                if ((xpqn != null) && !visited.ContainsKey(XName.Get(xpqn.LocalName, xpqn.Namespace)))
                {
                    xpqn._InitQueryables(navigator, queryables, visited);
                }
            }

            foreach (CswQueryable cq in AssociatedQueryables)
            {
                if (!queryables.ContainsKey(cq.Name))
                {
                    queryables.Add(cq.Name, new List <XPathNavigator>());
                }

                var n = (XPathQueryableNavigator)navigator.Clone();
                n.MoveTo(this);
                queryables[cq.Name].Add(n);
            }
        }