XPathNavigator.Evaluate Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
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
Dá XPathExpression se vyhodnotit.
Návraty
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
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
Dá XPathExpression se vyhodnotit.
- context
- XPathNodeIterator
Odkazující XPathNodeIterator na vybranou sadu uzlů, na kterou se má vyhodnocení provést.
Návraty
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:
Argument
context
jenull
.MoveNext nebylo XPathNodeIteratorvolána na .
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.