Udostępnij za pośrednictwem


XPathNavigator.Evaluate Metoda

Definicja

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

Object

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

Object

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

Object

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

Object

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:

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.

Dotyczy