Sdílet prostřednictvím


XPathNavigator.Evaluate Metoda

Definice

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

Přetížení

Name Description
Evaluate(String)

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

Evaluate(XPathExpression)

Vyhodnotí zadaný XPathExpression 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)

Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs

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

Výsledek výrazu (logická hodnota, číslo, řetězec nebo sada uzlů). Mapuje se na Booleanobjekty , Double, Stringnebo 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í hodnotu Double.

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 Price/text() C# převede uzel na číslo, vynásobí 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í odkaz na sadu uzlů, aby bylo možné vyhodnotit. V tomto případě musíte použít přetížení, které přebírá XPathNodeIterator jako argument; jinak funkce position() a last() vrátí hodnotu 0.

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

Viz také

Platí pro

Evaluate(XPathExpression)

Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs

Vyhodnotí zadaný XPathExpression 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

Výsledek výrazu (logická hodnota, číslo, řetězec nebo sada uzlů). Mapuje se na Booleanobjekty , Double, Stringnebo 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í a XPathExpression vrátí hodnotu Double.

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řevodu Price/text() uzlu na číslo a vynásobení hodnoty číslem 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í odkaz na sadu uzlů, aby bylo možné vyhodnotit. V tomto případě musíte použít přetížení, které přebírá XPathNodeIterator jako argument; jinak funkce position() a last() vrátí hodnotu 0.

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

Viz také

Platí pro

Evaluate(String, IXmlNamespaceResolver)

Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs

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

Výsledek výrazu (logická hodnota, číslo, řetězec nebo sada uzlů). Mapuje se na Booleanobjekty , Double, Stringnebo 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 použití objektu XmlNamespaceManager určeného k překladu předpon oboru názvů ve výrazu XPath.

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řevodu Price/text() uzlu na číslo a vynásobení hodnoty číslem 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í odkaz na sadu uzlů, aby bylo možné vyhodnotit. V tomto případě musíte použít přetížení, které přebírá XPathNodeIterator jako argument; jinak funkce position() a last() vrátí hodnotu 0.

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

Platí pro

Evaluate(XPathExpression, XPathNodeIterator)

Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs

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ů, se kterou se má vyhodnocení provést.

Návraty

Výsledek výrazu (logická hodnota, číslo, řetězec nebo sada uzlů). Mapuje se na Booleanobjekty , Double, Stringnebo 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 XPathNodeIterator jako kontextového uzlu.

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 ano null, použije se uzel, na kterém XPathNavigator je aktuálně umístěný, jako kontextový uzel.

Funkce position() a last(), pokud nejsou použity jako predikát v kroku umístění, 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