XPathNavigator.Evaluate Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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
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
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
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:
El argumento
context
esnull
.MoveNextno se ha llamado a en .XPathNodeIterator
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.