System.Xml.XPath.XPathNavigator.Evaluate C# (CSharp) Method

Evaluate() public method

public Evaluate ( XPathExpression expr, XPathNodeIterator context ) : object
expr XPathExpression
context XPathNodeIterator
return object
        public virtual object Evaluate(XPathExpression expr, XPathNodeIterator context)
        {
            CompiledXpathExpr cexpr = expr as CompiledXpathExpr;
            if (cexpr == null)
            {
                throw XPathException.Create(SR.Xp_BadQueryObject);
            }
            Query query = Query.Clone(cexpr.QueryTree);
            query.Reset();

            if (context == null)
            {
                context = new XPathSingletonIterator(this.Clone(), /*moved:*/true);
            }

            object result = query.Evaluate(context);

            if (result is XPathNodeIterator)
            {
                return new XPathSelectionIterator(context.Current, query);
            }

            return result;
        }

Same methods

XPathNavigator::Evaluate ( XPathExpression expr ) : object
XPathNavigator::Evaluate ( string xpath ) : object
XPathNavigator::Evaluate ( string xpath, IXmlNamespaceResolver resolver ) : object

Usage Example

        public override void WriteSyntax(XPathNavigator reflection, SyntaxWriter writer)
        {
            writer.WriteStartBlock(Language);

            // Check the list of assemblies for which to generate XAML syntax
            string assemblyName = (string)reflection.Evaluate(apiContainingAssemblyExpression);
            string namespaceName = (string)reflection.Evaluate(apiContainingNamespaceNameExpression);
            if (!xamlAssemblies.ContainsKey(assemblyName.ToLower()))
            {
                WriteXamlBoilerplate(XamlBoilerplateID.nonXamlAssemblyBoilerplate, writer);
            }
            else
            {
                string group = (string)reflection.Evaluate(apiGroupExpression);
                switch (group)
                {
                    case "namespace":
                        WriteNamespaceSyntax(reflection, writer);
                        break;
                    case "type":
                        WriteTypeSyntax(reflection, writer);
                        break;
                    case "member":
                        WriteMemberSyntax(reflection, writer);
                        break;
                }
                WriteXamlXmlnsUri(assemblyName, namespaceName, writer);
            }

            writer.WriteEndBlock();
        }
All Usage Examples Of System.Xml.XPath.XPathNavigator::Evaluate