XPathNavigator.Evaluate Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Oblicza określone wyrażenie XPath i zwraca wpisany wynik.
Przeciążenia
| Evaluate(String) |
Oblicza określone wyrażenie XPath i zwraca wpisany wynik. |
| Evaluate(XPathExpression) |
Oblicza element XPathExpression i zwraca wpisany wynik. |
| Evaluate(String, IXmlNamespaceResolver) |
Oblicza określone wyrażenie XPath i zwraca wpisany wynik, używając określonego IXmlNamespaceResolver obiektu do rozpoznawania prefiksów przestrzeni nazw w wyrażeniu XPath. |
| Evaluate(XPathExpression, XPathNodeIterator) |
Używa podanego kontekstu, aby ocenić XPathExpressionparametr i zwraca typowany wynik. |
Evaluate(String)
Oblicza określone wyrażenie XPath i zwraca wpisany wynik.
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
Parametry
- xpath
- String
Ciąg reprezentujący wyrażenie XPath, które można ocenić.
Zwraca
Wynik wyrażenia (wartość logiczna, liczba, ciąg lub zestaw węzłów). To mapuje odpowiednio na Booleanobiekty , Double, Stringlub XPathNodeIterator .
Wyjątki
Zwracany typ wyrażenia XPath to zestaw węzłów.
Wyrażenie XPath jest nieprawidłowe.
Przykłady
Poniższy przykład oblicza wyrażenie XPath i zwraca wartość 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())
W przykładzie books.xml plik jest pobierany jako dane wejściowe.
<?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>
Uwagi
Poniższy kod języka C# konwertuje Price/text() węzeł na liczbę, mnoży go przez 10 i zwraca wynikową wartość.
nav.Evaluate("Price/text()*10");
Uwaga
Funkcje XPath position() i last(), chyba że są używane jako predykat w kroku lokalizacji, wymagają odwołania do zestawu węzłów w celu oceny. W takim przypadku należy użyć przeciążenia, które przyjmuje jako XPathNodeIterator argument; w przeciwnym razie funkcja position() i last() zwraca wartość 0.
Ta metoda nie ma wpływu na stan obiektu XPathNavigator.
Zobacz też
Dotyczy
Evaluate(XPathExpression)
Oblicza element XPathExpression i zwraca wpisany wynik.
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
Parametry
- expr
- XPathExpression
Element XPathExpression , który można ocenić.
Zwraca
Wynik wyrażenia (wartość logiczna, liczba, ciąg lub zestaw węzłów). To mapuje odpowiednio na Booleanobiekty , Double, Stringlub XPathNodeIterator .
Wyjątki
Zwracany typ wyrażenia XPath to zestaw węzłów.
Wyrażenie XPath jest nieprawidłowe.
Przykłady
W poniższym przykładzie jest obliczana wartość XPathExpression i zwraca wartość 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())
W przykładzie books.xml plik jest pobierany jako dane wejściowe.
<?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>
Uwagi
Poniższy kod w języku C# zwraca liczbę po przekonwertowaniu węzła Price/text() na liczbę i pomnożeniu wartości przez 10.
XPathExpression expr = nav.Compile("Price/text()*10");
nav.Evaluate(expr);
Uwaga
Funkcje XPath position() i last(), chyba że są używane jako predykat w kroku lokalizacji, wymagają odwołania do zestawu węzłów w celu oceny. W takim przypadku należy użyć przeciążenia, które przyjmuje jako XPathNodeIterator argument; w przeciwnym razie funkcja position() i last() zwraca wartość 0.
Ta metoda nie ma wpływu na stan obiektu XPathNavigator.
Zobacz też
Dotyczy
Evaluate(String, IXmlNamespaceResolver)
Oblicza określone wyrażenie XPath i zwraca wpisany wynik, używając określonego IXmlNamespaceResolver obiektu do rozpoznawania prefiksów przestrzeni nazw w wyrażeniu 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
Parametry
- xpath
- String
Ciąg reprezentujący wyrażenie XPath, które można ocenić.
- resolver
- IXmlNamespaceResolver
IXmlNamespaceResolver Obiekt używany do rozpoznawania prefiksów przestrzeni nazw w wyrażeniu XPath.
Zwraca
Wynik wyrażenia (wartość logiczna, liczba, ciąg lub zestaw węzłów). To mapuje odpowiednio na Booleanobiekty , Double, Stringlub XPathNodeIterator .
Wyjątki
Zwracany typ wyrażenia XPath to zestaw węzłów.
Wyrażenie XPath jest nieprawidłowe.
Przykłady
Poniższy przykład oblicza wyrażenie XPath i zwraca Double użycie obiektu określonego XmlNamespaceManager do rozpoznawania prefiksów przestrzeni nazw w wyrażeniu 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())
W przykładzie contosoBooks.xml plik jest pobierany jako dane wejściowe.
<?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>
Uwagi
Poniższy kod w języku C# zwraca liczbę po przekonwertowaniu węzła Price/text() na liczbę i pomnożeniu wartości przez 10.
XPathExpression expr = nav.Compile("Price/text()*10");
nav.Evaluate(expr);
Uwaga
Funkcje XPath position() i last(), chyba że są używane jako predykat w kroku lokalizacji, wymagają odwołania do zestawu węzłów w celu oceny. W takim przypadku należy użyć przeciążenia, które przyjmuje jako XPathNodeIterator argument; w przeciwnym razie funkcja position() i last() zwraca wartość 0.
Ta metoda nie ma wpływu na stan obiektu XPathNavigator.
Dotyczy
Evaluate(XPathExpression, XPathNodeIterator)
Używa podanego kontekstu, aby ocenić XPathExpressionparametr i zwraca typowany wynik.
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
Parametry
- expr
- XPathExpression
Element XPathExpression , który można ocenić.
- context
- XPathNodeIterator
Element XPathNodeIterator wskazujący wybrany zestaw węzłów, na który ma zostać przeprowadzona ocena.
Zwraca
Wynik wyrażenia (wartość logiczna, liczba, ciąg lub zestaw węzłów). To mapuje odpowiednio na Booleanobiekty , Double, Stringlub XPathNodeIterator .
Wyjątki
Zwracany typ wyrażenia XPath to zestaw węzłów.
Wyrażenie XPath jest nieprawidłowe.
Przykłady
Poniższy przykład oblicza element XPathExpression i zwraca Double wartość przy użyciu Current węzła jako XPathNodeIterator węzła kontekstu.
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())
W przykładzie books.xml plik jest pobierany jako dane wejściowe.
<?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>
Uwagi
Wyrażenie jest oceniane przy użyciu Current węzła jako węzła XPathNodeIterator kontekstu. Jeśli context jest to null, węzeł, na którym XPathNavigator jest obecnie umieszczony, jest używany jako węzeł kontekstu.
Funkcje position() i last(), chyba że są używane jako predykat w kroku lokalizacji, zawsze zwracają wartość 0 w następujących warunkach:
Argumentem
contextjestnull.MoveNext nie został wywołany w obiekcie XPathNodeIterator.
Ponieważ funkcje position() i last() działają w bieżącym węźle, nie należy używać Current właściwości do odejścia od wybranego zestawu węzłów. Może to spowodować unieważnienie stanu elementu XPathNavigator.
Ta metoda nie ma wpływu na stan obiektu XPathNavigator.