XPathNavigator.Evaluate Metod

Definition

Utvärderar det angivna XPath-uttrycket och returnerar det typerade resultatet.

Överlagringar

Name Description
Evaluate(String)

Utvärderar det angivna XPath-uttrycket och returnerar det typerade resultatet.

Evaluate(XPathExpression)

Utvärderar och returnerar XPathExpression det typerade resultatet.

Evaluate(String, IXmlNamespaceResolver)

Utvärderar det angivna XPath-uttrycket och returnerar det inskrivna resultatet med hjälp av det IXmlNamespaceResolver angivna objektet för att matcha namnområdesprefix i XPath-uttrycket.

Evaluate(XPathExpression, XPathNodeIterator)

Använder den angivna kontexten XPathExpressionför att utvärdera , och returnerar det typerade resultatet.

Evaluate(String)

Källa:
XPathNavigator.cs
Källa:
XPathNavigator.cs
Källa:
XPathNavigator.cs
Källa:
XPathNavigator.cs
Källa:
XPathNavigator.cs

Utvärderar det angivna XPath-uttrycket och returnerar det typerade resultatet.

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

Parametrar

xpath
String

En sträng som representerar ett XPath-uttryck som kan utvärderas.

Returer

Resultatet av uttrycket (boolesk, tal, sträng eller noduppsättning). Detta mappar till Boolean, Double, Stringeller XPathNodeIterator objekt respektive.

Undantag

Returtypen för XPath-uttrycket är en noduppsättning.

XPath-uttrycket är inte giltigt.

Exempel

I följande exempel utvärderas ett XPath-uttryck och returneras en 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())

Exemplet tar books.xml filen som indata.

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

Kommentarer

Följande C#-kod konverterar Price/text() noden till ett tal, multiplicerar den med 10 och returnerar det resulterande värdet.

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

Note

Funktionerna XPath position() och last(), såvida de inte används som predikat i ett platssteg, kräver en referens till en noduppsättning för att kunna utvärderas. I det här fallet måste du använda den överlagring som tar ett XPathNodeIterator argument. Annars returnerar position() och last() 0.

Den här metoden har ingen effekt på tillståndet för XPathNavigator.

Se även

Gäller för

Evaluate(XPathExpression)

Källa:
XPathNavigator.cs
Källa:
XPathNavigator.cs
Källa:
XPathNavigator.cs
Källa:
XPathNavigator.cs
Källa:
XPathNavigator.cs

Utvärderar och returnerar XPathExpression det typerade resultatet.

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

Parametrar

expr
XPathExpression

En XPathExpression som kan utvärderas.

Returer

Resultatet av uttrycket (boolesk, tal, sträng eller noduppsättning). Detta mappar till Boolean, Double, Stringeller XPathNodeIterator objekt respektive.

Undantag

Returtypen för XPath-uttrycket är en noduppsättning.

XPath-uttrycket är inte giltigt.

Exempel

I följande exempel utvärderas en XPathExpression och returneras en 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())

Exemplet tar books.xml filen som indata.

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

Kommentarer

Följande C#-kod returnerar ett tal när noden har konverterats Price/text() till ett tal och värdet multiplicerats med 10.

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

Note

Funktionerna XPath position() och last(), såvida de inte används som predikat i ett platssteg, kräver en referens till en noduppsättning för att kunna utvärderas. I det här fallet måste du använda den överlagring som tar ett XPathNodeIterator argument. Annars returnerar position() och last() 0.

Den här metoden har ingen effekt på tillståndet för XPathNavigator.

Se även

Gäller för

Evaluate(String, IXmlNamespaceResolver)

Källa:
XPathNavigator.cs
Källa:
XPathNavigator.cs
Källa:
XPathNavigator.cs
Källa:
XPathNavigator.cs
Källa:
XPathNavigator.cs

Utvärderar det angivna XPath-uttrycket och returnerar det inskrivna resultatet med hjälp av det IXmlNamespaceResolver angivna objektet för att matcha namnområdesprefix i XPath-uttrycket.

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

Parametrar

xpath
String

En sträng som representerar ett XPath-uttryck som kan utvärderas.

resolver
IXmlNamespaceResolver

Objektet IXmlNamespaceResolver som används för att matcha namnområdesprefix i XPath-uttrycket.

Returer

Resultatet av uttrycket (boolesk, tal, sträng eller noduppsättning). Detta mappar till Boolean, Double, Stringeller XPathNodeIterator objekt respektive.

Undantag

Returtypen för XPath-uttrycket är en noduppsättning.

XPath-uttrycket är inte giltigt.

Exempel

I följande exempel utvärderas ett XPath-uttryck och ett Double med hjälp av det XmlNamespaceManager angivna objektet för att matcha namnområdesprefix i XPath-uttrycket.

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

Exemplet tar contosoBooks.xml filen som indata.

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

Kommentarer

Följande C#-kod returnerar ett tal när noden har konverterats Price/text() till ett tal och värdet multiplicerats med 10.

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

Note

Funktionerna XPath position() och last(), såvida de inte används som predikat i ett platssteg, kräver en referens till en noduppsättning för att kunna utvärderas. I det här fallet måste du använda den överlagring som tar ett XPathNodeIterator argument. Annars returnerar position() och last() 0.

Den här metoden har ingen effekt på tillståndet för XPathNavigator.

Gäller för

Evaluate(XPathExpression, XPathNodeIterator)

Källa:
XPathNavigator.cs
Källa:
XPathNavigator.cs
Källa:
XPathNavigator.cs
Källa:
XPathNavigator.cs
Källa:
XPathNavigator.cs

Använder den angivna kontexten XPathExpressionför att utvärdera , och returnerar det typerade resultatet.

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

Parametrar

expr
XPathExpression

En XPathExpression som kan utvärderas.

context
XPathNodeIterator

En XPathNodeIterator som pekar på den valda noduppsättningen som utvärderingen ska utföras på.

Returer

Resultatet av uttrycket (boolesk, tal, sträng eller noduppsättning). Detta mappar till Boolean, Double, Stringeller XPathNodeIterator objekt respektive.

Undantag

Returtypen för XPath-uttrycket är en noduppsättning.

XPath-uttrycket är inte giltigt.

Exempel

I följande exempel utvärderas och XPathExpression returneras en Double med noden Current i XPathNodeIterator som kontextnod.

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

Exemplet tar books.xml filen som indata.

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

Kommentarer

Uttrycket utvärderas med noden Current i XPathNodeIterator som kontextnod. Om context är nullanvänds noden där den XPathNavigator för närvarande är placerad som kontextnod.

Funktionerna position() och last(), såvida de inte används som predikat i ett platssteg, returnerar alltid 0 under följande villkor:

Eftersom funktionerna position() och last() fungerar på den aktuella noden bör du inte använda Current egenskapen för att flytta bort från den valda noduppsättningen. Detta kan ogiltigförklara tillståndet för XPathNavigator.

Den här metoden har ingen effekt på tillståndet för XPathNavigator.

Gäller för