Compartir vía


XPathNavigator.Evaluate Método

Definición

Evalúa la expresión XPath especificada y devuelve el resultado con tipo.

Sobrecargas

Evaluate(String)

Evalúa la expresión XPath especificada y devuelve el resultado de tipo.

Evaluate(XPathExpression)

Evalúa la expresión XPathExpression y devuelve el resultado de tipo.

Evaluate(String, IXmlNamespaceResolver)

Evalúa la expresión XPath especificada y devuelve el resultado de tipo mediante el objeto IXmlNamespaceResolver especificado para resolver prefijos de espacio de nombres en la expresión XPath.

Evaluate(XPathExpression, XPathNodeIterator)

Utiliza el contexto proporcionado para evaluar la expresión XPathExpression y devuelve el resultado con tipo.

Evaluate(String)

Evalúa la expresión XPath especificada y devuelve el resultado de tipo.

public:
 virtual System::Object ^ Evaluate(System::String ^ xpath);
public virtual object Evaluate (string xpath);
abstract member Evaluate : string -> obj
override this.Evaluate : string -> obj
Public Overridable Function Evaluate (xpath As String) As Object

Parámetros

xpath
String

Cadena que representa a una expresión XPath que se puede evaluar.

Devoluciones

Object

Resultado de la expresión (valor booleano, número, cadena o conjunto de nodos). Se asigna a los objetos Boolean, Double, String o XPathNodeIterator, respectivamente.

Excepciones

El tipo de valor devuelto de la expresión XPath es un conjunto de nodos.

La expresión XPath no es válida.

Ejemplos

En el ejemplo siguiente se evalúa una expresión XPath y se devuelve un Double.

XPathDocument^ document = gcnew XPathDocument("books.xml");
XPathNavigator^ navigator = document->CreateNavigator();

Double total = (double)navigator->Evaluate("sum(descendant::book/price)");
Console::WriteLine("Total price for all books: {0}", total.ToString());
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();

Double total = (double)navigator.Evaluate("sum(descendant::book/price)");
Console.WriteLine("Total price for all books: {0}", total.ToString());
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim total As Double = CType(navigator.Evaluate("sum(descendant::book/price)"), Double)
Console.WriteLine("Total price for all books: {0}", total.ToString())

En el ejemplo se toma como entrada el archivo books.xml.

<?xml version="1.0" encoding="utf-8" ?>   
<bookstore>  
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">  
        <title>The Autobiography of Benjamin Franklin</title>  
        <author>  
            <first-name>Benjamin</first-name>  
            <last-name>Franklin</last-name>  
        </author>  
        <price>8.99</price>  
    </book>  
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">  
        <title>The Confidence Man</title>  
        <author>  
            <first-name>Herman</first-name>  
            <last-name>Melville</last-name>  
        </author>  
        <price>11.99</price>  
    </book>  
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">  
        <title>The Gorgias</title>  
        <author>  
            <name>Plato</name>  
        </author>  
        <price>9.99</price>  
    </book>  
</bookstore>  

Comentarios

El siguiente código de C# convierte el Price/text() nodo en un número, lo multiplica por 10 y devuelve el valor resultante.

nav.Evaluate("Price/text()*10");  

Nota

Las funciones XPath position() y last(), a menos que se usen como predicado en un paso de ubicación, requieren una referencia a un conjunto de nodos para evaluarse. En este caso, debe usar la sobrecarga que toma un XPathNodeIterator como argumento; de lo contrario, position() y last() devuelven 0.

Este método no tiene ningún efecto en el estado de XPathNavigator.

Consulte también

Se aplica a

Evaluate(XPathExpression)

Evalúa la expresión XPathExpression y devuelve el resultado de tipo.

public:
 virtual System::Object ^ Evaluate(System::Xml::XPath::XPathExpression ^ expr);
public virtual object Evaluate (System.Xml.XPath.XPathExpression expr);
abstract member Evaluate : System.Xml.XPath.XPathExpression -> obj
override this.Evaluate : System.Xml.XPath.XPathExpression -> obj
Public Overridable Function Evaluate (expr As XPathExpression) As Object

Parámetros

expr
XPathExpression

XPathExpression que se puede evaluar.

Devoluciones

Object

Resultado de la expresión (valor booleano, número, cadena o conjunto de nodos). Se asigna a los objetos Boolean, Double, String o XPathNodeIterator, respectivamente.

Excepciones

El tipo de valor devuelto de la expresión XPath es un conjunto de nodos.

La expresión XPath no es válida.

Ejemplos

En el ejemplo siguiente se evalúa un XPathExpression objeto y se devuelve .Double

XPathDocument^ document = gcnew XPathDocument("books.xml");
XPathNavigator^ navigator = document->CreateNavigator();

XPathExpression^ query = navigator->Compile("sum(descendant::book/price)");

Double total = (double)navigator->Evaluate(query);
Console::WriteLine("Total price for all books: {0}", total.ToString());
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();

XPathExpression query = navigator.Compile("sum(descendant::book/price)");

Double total = (double)navigator.Evaluate(query);
Console.WriteLine("Total price for all books: {0}", total.ToString());
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim query As XPathExpression = navigator.Compile("sum(descendant::book/price)")

Dim total As Double = CType(navigator.Evaluate(query), Double)
Console.WriteLine("Total price for all books: {0}", total.ToString())

En el ejemplo se toma como entrada el archivo books.xml.

<?xml version="1.0" encoding="utf-8" ?>   
<bookstore>  
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">  
        <title>The Autobiography of Benjamin Franklin</title>  
        <author>  
            <first-name>Benjamin</first-name>  
            <last-name>Franklin</last-name>  
        </author>  
        <price>8.99</price>  
    </book>  
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">  
        <title>The Confidence Man</title>  
        <author>  
            <first-name>Herman</first-name>  
            <last-name>Melville</last-name>  
        </author>  
        <price>11.99</price>  
    </book>  
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">  
        <title>The Gorgias</title>  
        <author>  
            <name>Plato</name>  
        </author>  
        <price>9.99</price>  
    </book>  
</bookstore>  

Comentarios

El siguiente código de C# devuelve un número después de convertir el Price/text() nodo en un número y multiplicar el valor por 10.

XPathExpression expr = nav.Compile("Price/text()*10");  
nav.Evaluate(expr);  

Nota

Las funciones XPath position() y last(), a menos que se usen como predicado en un paso de ubicación, requieren una referencia a un conjunto de nodos para evaluarse. En este caso, debe usar la sobrecarga que toma un XPathNodeIterator como argumento; de lo contrario, position() y last() devuelven 0.

Este método no tiene ningún efecto en el estado de XPathNavigator.

Consulte también

Se aplica a

Evaluate(String, IXmlNamespaceResolver)

Evalúa la expresión XPath especificada y devuelve el resultado de tipo mediante el objeto IXmlNamespaceResolver especificado para resolver prefijos de espacio de nombres en la expresión XPath.

public:
 virtual System::Object ^ Evaluate(System::String ^ xpath, System::Xml::IXmlNamespaceResolver ^ resolver);
public virtual object Evaluate (string xpath, System.Xml.IXmlNamespaceResolver? resolver);
public virtual object Evaluate (string xpath, System.Xml.IXmlNamespaceResolver resolver);
abstract member Evaluate : string * System.Xml.IXmlNamespaceResolver -> obj
override this.Evaluate : string * System.Xml.IXmlNamespaceResolver -> obj
Public Overridable Function Evaluate (xpath As String, resolver As IXmlNamespaceResolver) As Object

Parámetros

xpath
String

Cadena que representa a una expresión XPath que se puede evaluar.

resolver
IXmlNamespaceResolver

Objeto IXmlNamespaceResolver utilizado para resolver los prefijos de espacio de nombres en la expresión XPath.

Devoluciones

Object

Resultado de la expresión (valor booleano, número, cadena o conjunto de nodos). Se asigna a los objetos Boolean, Double, String o XPathNodeIterator, respectivamente.

Excepciones

El tipo de valor devuelto de la expresión XPath es un conjunto de nodos.

La expresión XPath no es válida.

Ejemplos

En el ejemplo siguiente se evalúa una expresión XPath y se devuelve un Double utilizando el XmlNamespaceManager objeto especificado para resolver los prefijos de espacio de nombres en la expresión XPath.

XPathDocument^ document = gcnew XPathDocument("contosoBooks.xml");
XPathNavigator^ navigator = document->CreateNavigator();

XmlNamespaceManager^ manager = gcnew XmlNamespaceManager(navigator->NameTable);
manager->AddNamespace("bk", "http://www.contoso.com/books");

Double total = (double)navigator->Evaluate("sum(descendant::bk:book/bk:price)", manager);
Console::WriteLine("Total price for all books: {0}", total.ToString());
XPathDocument document = new XPathDocument("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();

XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable);
manager.AddNamespace("bk", "http://www.contoso.com/books");

Double total = (double)navigator.Evaluate("sum(descendant::bk:book/bk:price)", manager);
Console.WriteLine("Total price for all books: {0}", total.ToString());
Dim document As XPathDocument = New XPathDocument("contosoBooks.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim manager As XmlNamespaceManager = New XmlNamespaceManager(navigator.NameTable)
manager.AddNamespace("bk", "http://www.contoso.com/books")

Dim total As Double = CType(navigator.Evaluate("sum(descendant::bk:book/bk:price)", manager), Double)
Console.WriteLine("Total price for all books: {0}", total.ToString())

En el ejemplo se toma como entrada el archivo contosoBooks.xml.

<?xml version="1.0" encoding="utf-8" ?>  
<bookstore xmlns="http://www.contoso.com/books">  
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">  
        <title>The Autobiography of Benjamin Franklin</title>  
        <author>  
            <first-name>Benjamin</first-name>  
            <last-name>Franklin</last-name>  
        </author>  
        <price>8.99</price>  
    </book>  
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">  
        <title>The Confidence Man</title>  
        <author>  
            <first-name>Herman</first-name>  
            <last-name>Melville</last-name>  
        </author>  
        <price>11.99</price>  
    </book>  
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">  
        <title>The Gorgias</title>  
        <author>  
            <name>Plato</name>  
        </author>  
        <price>9.99</price>  
    </book>  
</bookstore>  

Comentarios

El siguiente código de C# devuelve un número después de convertir el Price/text() nodo en un número y multiplicar el valor por 10.

XPathExpression expr = nav.Compile("Price/text()*10");  
nav.Evaluate(expr);  

Nota

Las funciones XPath position() y last(), a menos que se usen como predicado en un paso de ubicación, requieren una referencia a un conjunto de nodos para evaluarse. En este caso, debe usar la sobrecarga que toma un XPathNodeIterator como argumento; de lo contrario, position() y last() devuelven 0.

Este método no tiene ningún efecto en el estado de XPathNavigator.

Se aplica a

Evaluate(XPathExpression, XPathNodeIterator)

Utiliza el contexto proporcionado para evaluar la expresión XPathExpression y devuelve el resultado con tipo.

public:
 virtual System::Object ^ Evaluate(System::Xml::XPath::XPathExpression ^ expr, System::Xml::XPath::XPathNodeIterator ^ context);
public virtual object Evaluate (System.Xml.XPath.XPathExpression expr, System.Xml.XPath.XPathNodeIterator? context);
public virtual object Evaluate (System.Xml.XPath.XPathExpression expr, System.Xml.XPath.XPathNodeIterator context);
abstract member Evaluate : System.Xml.XPath.XPathExpression * System.Xml.XPath.XPathNodeIterator -> obj
override this.Evaluate : System.Xml.XPath.XPathExpression * System.Xml.XPath.XPathNodeIterator -> obj
Public Overridable Function Evaluate (expr As XPathExpression, context As XPathNodeIterator) As Object

Parámetros

expr
XPathExpression

XPathExpression que se puede evaluar.

context
XPathNodeIterator

XPathNodeIterator que señala al conjunto de nodos seleccionado en el que se va a llevar a cabo la evaluación.

Devoluciones

Object

Resultado de la expresión (valor booleano, número, cadena o conjunto de nodos). Se asigna a los objetos Boolean, Double, String o XPathNodeIterator, respectivamente.

Excepciones

El tipo de valor devuelto de la expresión XPath es un conjunto de nodos.

La expresión XPath no es válida.

Ejemplos

En el ejemplo siguiente se evalúa un XPathExpression objeto y se devuelve mediante Double el Current nodo de como nodo de XPathNodeIterator contexto.

XPathDocument^ document = gcnew XPathDocument("books.xml");
XPathNavigator^ navigator = document->CreateNavigator();

XPathNodeIterator^ nodes = navigator->Select("//book");
XPathExpression^ query = nodes->Current->Compile("sum(descendant::price)");

Double total = (double)navigator->Evaluate(query, nodes);
Console::WriteLine("Total price for all books: {0}", total.ToString());
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();

XPathNodeIterator nodes = navigator.Select("//book");
XPathExpression query = nodes.Current.Compile("sum(descendant::price)");

Double total = (double)navigator.Evaluate(query, nodes);
Console.WriteLine("Total price for all books: {0}", total.ToString());
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim nodes As XPathNodeIterator = navigator.Select("//book")
Dim query As XPathExpression = nodes.Current.Compile("sum(descendant::price)")

Dim total As Double = CType(navigator.Evaluate(query, nodes), Double)
Console.WriteLine("Total price for all books: {0}", total.ToString())

En el ejemplo se toma como entrada el archivo books.xml.

<?xml version="1.0" encoding="utf-8" ?>   
<bookstore>  
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">  
        <title>The Autobiography of Benjamin Franklin</title>  
        <author>  
            <first-name>Benjamin</first-name>  
            <last-name>Franklin</last-name>  
        </author>  
        <price>8.99</price>  
    </book>  
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">  
        <title>The Confidence Man</title>  
        <author>  
            <first-name>Herman</first-name>  
            <last-name>Melville</last-name>  
        </author>  
        <price>11.99</price>  
    </book>  
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">  
        <title>The Gorgias</title>  
        <author>  
            <name>Plato</name>  
        </author>  
        <price>9.99</price>  
    </book>  
</bookstore>  

Comentarios

La expresión se evalúa utilizando el Current nodo de como nodo de XPathNodeIterator contexto. Si context es null, el nodo en el XPathNavigator que se coloca actualmente se usa como nodo de contexto.

Las funciones position() y last(), a menos que se usen como predicado en un paso de ubicación, devuelvan siempre 0 en las condiciones siguientes:

Dado que las funciones position() y last() funcionan en el nodo actual, no debe usar la Current propiedad para alejarse del conjunto de nodos seleccionado. Esto podría invalidar el estado de .XPathNavigator

Este método no tiene ningún efecto en el estado de XPathNavigator.

Se aplica a