Sdílet prostřednictvím


XPathNavigator.Evaluate Metoda

Definice

Vyhodnotí zadaný výraz XPath a vrátí zadaný výsledek.

Přetížení

Evaluate(String)

Vyhodnotí zadaný výraz XPath a vrátí zadaný výsledek.

Evaluate(XPathExpression)

Vyhodnotí XPathExpression typový výsledek a vrátí ho.

Evaluate(String, IXmlNamespaceResolver)

Vyhodnotí zadaný výraz XPath a vrátí zadaný výsledek pomocí objektu IXmlNamespaceResolver určeného k překladu předpon oboru názvů ve výrazu XPath.

Evaluate(XPathExpression, XPathNodeIterator)

Použije zadaný kontext k vyhodnocení XPathExpressiona vrátí zadaný výsledek.

Evaluate(String)

Vyhodnotí zadaný výraz XPath a vrátí zadaný výsledek.

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

Řetězec představující výraz XPath, který lze vyhodnotit.

Návraty

Object

Výsledek výrazu (logická hodnota, číslo, řetězec nebo sada uzlů). Tato možnost se mapuje na Booleanobjekty , , DoubleStringnebo XPathNodeIterator objekty.

Výjimky

Návratový typ výrazu XPath je sada uzlů.

Výraz XPath není platný.

Příklady

Následující příklad vyhodnotí výraz XPath a vrátí Doublehodnotu .

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())

Příklad vezme books.xml soubor jako vstup.

<?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>  

Poznámky

Následující kód jazyka C# převede uzel na číslo, vynásobí Price/text() ho číslem 10 a vrátí výslednou hodnotu.

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

Poznámka

Funkce XPath position() a last(), pokud nejsou použity jako predikát v kroku umístění, vyžadují k vyhodnocení odkaz na sadu uzlů. V tomto případě musíte použít přetížení, které přebírá XPathNodeIterator jako argument; jinak, pozice() a last() vrátí hodnotu 0.

Tato metoda nemá žádný vliv na stav XPathNavigator.

Viz také

Platí pro

Evaluate(XPathExpression)

Vyhodnotí XPathExpression typový výsledek a vrátí ho.

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

XPathExpression se vyhodnotit.

Návraty

Object

Výsledek výrazu (logická hodnota, číslo, řetězec nebo sada uzlů). Tato možnost se mapuje na Booleanobjekty , , DoubleStringnebo XPathNodeIterator objekty.

Výjimky

Návratový typ výrazu XPath je sada uzlů.

Výraz XPath není platný.

Příklady

Následující příklad vyhodnotí XPathExpression a vrátí Doublehodnotu .

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())

Příklad vezme books.xml soubor jako vstup.

<?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>  

Poznámky

Následující kód jazyka C# vrátí číslo po převedení Price/text() uzlu na číslo a vynásobení hodnoty o 10.

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

Poznámka

Funkce XPath position() a last(), pokud nejsou použity jako predikát v kroku umístění, vyžadují k vyhodnocení odkaz na sadu uzlů. V tomto případě musíte použít přetížení, které přebírá XPathNodeIterator jako argument; jinak, pozice() a last() vrátí hodnotu 0.

Tato metoda nemá žádný vliv na stav XPathNavigator.

Viz také

Platí pro

Evaluate(String, IXmlNamespaceResolver)

Vyhodnotí zadaný výraz XPath a vrátí zadaný výsledek pomocí objektu IXmlNamespaceResolver určeného k překladu předpon oboru názvů ve výrazu 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

Řetězec představující výraz XPath, který lze vyhodnotit.

resolver
IXmlNamespaceResolver

Objekt IXmlNamespaceResolver použitý k překladu předpon oboru názvů ve výrazu XPath.

Návraty

Object

Výsledek výrazu (logická hodnota, číslo, řetězec nebo sada uzlů). Tato možnost se mapuje na Booleanobjekty , , DoubleStringnebo XPathNodeIterator objekty.

Výjimky

Návratový typ výrazu XPath je sada uzlů.

Výraz XPath není platný.

Příklady

Následující příklad vyhodnotí výraz XPath a vrátí Double pomocí objektu XmlNamespaceManager určeného k překladu předpon oboru názvů ve výrazu 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())

Příklad vezme contosoBooks.xml soubor jako vstup.

<?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>  

Poznámky

Následující kód jazyka C# vrátí číslo po převedení Price/text() uzlu na číslo a vynásobení hodnoty o 10.

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

Poznámka

Funkce XPath position() a last(), pokud nejsou použity jako predikát v kroku umístění, vyžadují k vyhodnocení odkaz na sadu uzlů. V tomto případě musíte použít přetížení, které přebírá XPathNodeIterator jako argument; jinak, pozice() a last() vrátí hodnotu 0.

Tato metoda nemá žádný vliv na stav XPathNavigator.

Platí pro

Evaluate(XPathExpression, XPathNodeIterator)

Použije zadaný kontext k vyhodnocení XPathExpressiona vrátí zadaný výsledek.

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

XPathExpression se vyhodnotit.

context
XPathNodeIterator

Odkazující XPathNodeIterator na vybranou sadu uzlů, na kterou se má vyhodnocení provést.

Návraty

Object

Výsledek výrazu (logická hodnota, číslo, řetězec nebo sada uzlů). Tato možnost se mapuje na Booleanobjekty , , DoubleStringnebo XPathNodeIterator objekty.

Výjimky

Návratový typ výrazu XPath je sada uzlů.

Výraz XPath není platný.

Příklady

Následující příklad vyhodnotí XPathExpression a vrátí Double použití Current uzlu jako kontextového uzlu XPathNodeIterator .

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())

Příklad vezme books.xml soubor jako vstup.

<?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>  

Poznámky

Výraz se vyhodnotí pomocí Current uzlu kontextového XPathNodeIterator uzlu. Pokud context je null, uzel, na kterém XPathNavigator je aktuálně umístěný, se používá jako kontextový uzel.

Funkce position() a last(), pokud se v kroku umístění nepoužívají jako predikát, vždy vrátí hodnotu 0 za následujících podmínek:

Vzhledem k tomu, že funkce position() a last() fungují na aktuálním uzlu, neměli byste tuto vlastnost použít Current k pohybu od vybrané sady uzlů. To by mohlo zneplatnit stav XPathNavigator.

Tato metoda nemá žádný vliv na stav XPathNavigator.

Platí pro