Share via


XPathNavigator.Evaluate 메서드

정의

지정된 XPath 식을 계산하고 형식화된 결과를 반환합니다.

오버로드

Evaluate(String)

지정된 XPath 식을 계산하고 형식화된 결과를 반환합니다.

Evaluate(XPathExpression)

XPathExpression을 계산하고 형식화된 결과를 반환합니다.

Evaluate(String, IXmlNamespaceResolver)

XPath 식에 있는 네임스페이스 접두사를 확인하기 위해 지정된 IXmlNamespaceResolver 개체를 사용하여 XPath 식을 계산한 후 형식화된 결과를 반환합니다.

Evaluate(XPathExpression, XPathNodeIterator)

제공된 컨텍스트를 사용하여 XPathExpression을 계산한 후 형식화된 결과를 반환합니다.

Evaluate(String)

지정된 XPath 식을 계산하고 형식화된 결과를 반환합니다.

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

매개 변수

xpath
String

계산할 수 있는 XPath 식을 나타내는 문자열입니다.

반환

Object

식의 결과(부울, 숫자, 문자열 또는 노드 집합)입니다. 각각 Boolean, Double, String 또는 XPathNodeIterator 개체에 매핑됩니다.

예외

XPath 식의 반환 형식은 노드 집합입니다.

XPath 식이 잘못되었습니다.

예제

다음 예제에서는 XPath 식을 계산하고 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())

이 예제에서는 books.xml 파일을 입력으로 사용합니다.

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

설명

다음 C# 코드는 노드를 숫자로 변환 Price/text() 하고 10을 곱한 다음 결과 값을 반환합니다.

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

참고

위치 단계에서 조건자로 사용되지 않는 한 XPath position() 및 last() 함수를 평가하려면 노드 집합에 대한 참조가 필요합니다. 이 경우 인수로 사용하는 오버로드를 XPathNodeIterator 사용해야 합니다. 그렇지 않으면 position() 및 last()는 0을 반환합니다.

이 메서드는 XPathNavigator.

추가 정보

적용 대상

Evaluate(XPathExpression)

XPathExpression을 계산하고 형식화된 결과를 반환합니다.

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

매개 변수

expr
XPathExpression

계산할 수 있는 XPathExpression입니다.

반환

Object

식의 결과(부울, 숫자, 문자열 또는 노드 집합)입니다. 각각 Boolean, Double, String 또는 XPathNodeIterator 개체에 매핑됩니다.

예외

XPath 식의 반환 형식은 노드 집합입니다.

XPath 식이 잘못되었습니다.

예제

다음 예제에서는 .를 XPathExpression 계산하고 반환합니다 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())

이 예제에서는 books.xml 파일을 입력으로 사용합니다.

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

설명

다음 C# 코드는 노드를 숫자로 변환하고 Price/text() 값을 10으로 곱한 후 숫자를 반환합니다.

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

참고

위치 단계에서 조건자로 사용되지 않는 한 XPath position() 및 last() 함수를 평가하려면 노드 집합에 대한 참조가 필요합니다. 이 경우 인수로 사용하는 오버로드를 XPathNodeIterator 사용해야 합니다. 그렇지 않으면 position() 및 last()는 0을 반환합니다.

이 메서드는 XPathNavigator.

추가 정보

적용 대상

Evaluate(String, IXmlNamespaceResolver)

XPath 식에 있는 네임스페이스 접두사를 확인하기 위해 지정된 IXmlNamespaceResolver 개체를 사용하여 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

매개 변수

xpath
String

계산할 수 있는 XPath 식을 나타내는 문자열입니다.

resolver
IXmlNamespaceResolver

XPath 식에 있는 네임스페이스 접두사를 확인하는 데 사용되는 IXmlNamespaceResolver 개체입니다.

반환

Object

식의 결과(부울, 숫자, 문자열 또는 노드 집합)입니다. 각각 Boolean, Double, String 또는 XPathNodeIterator 개체에 매핑됩니다.

예외

XPath 식의 반환 형식은 노드 집합입니다.

XPath 식이 잘못되었습니다.

예제

다음 예제에서는 XPath 식을 계산하고 XPath 식에서 XmlNamespaceManager 네임스페이스 접두사 확인에 지정된 개체를 사용하여 반환 Double 합니다.

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

이 예제에서는 contosoBooks.xml 파일을 입력으로 사용합니다.

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

설명

다음 C# 코드는 노드를 숫자로 변환하고 Price/text() 값을 10으로 곱한 후 숫자를 반환합니다.

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

참고

위치 단계에서 조건자로 사용되지 않는 한 XPath position() 및 last() 함수를 평가하려면 노드 집합에 대한 참조가 필요합니다. 이 경우 인수로 사용하는 오버로드를 XPathNodeIterator 사용해야 합니다. 그렇지 않으면 position() 및 last()는 0을 반환합니다.

이 메서드는 XPathNavigator.

적용 대상

Evaluate(XPathExpression, XPathNodeIterator)

제공된 컨텍스트를 사용하여 XPathExpression을 계산한 후 형식화된 결과를 반환합니다.

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

매개 변수

expr
XPathExpression

계산할 수 있는 XPathExpression입니다.

context
XPathNodeIterator

계산이 수행될 선택된 노드 집합을 가리키는 XPathNodeIterator입니다.

반환

Object

식의 결과(부울, 숫자, 문자열 또는 노드 집합)입니다. 각각 Boolean, Double, String 또는 XPathNodeIterator 개체에 매핑됩니다.

예외

XPath 식의 반환 형식은 노드 집합입니다.

XPath 식이 잘못되었습니다.

예제

다음 예제에서는 컨텍스트 노드 XPathNodeIterator 로 노드를 Current 사용하여 계산 XPathExpression 하고 반환 Double 합니다.

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

이 예제에서는 books.xml 파일을 입력으로 사용합니다.

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

설명

식은 컨텍스트 노드로 노드를 XPathNodeIterator 사용하여 Current 평가됩니다. 이 null경우 context 현재 위치가 XPathNavigator 지정된 노드가 컨텍스트 노드로 사용됩니다.

위치 단계에서 조건자로 사용되지 않는 한 position() 및 last() 함수는 항상 다음 조건에서 0을 반환합니다.

position() 및 last() 함수는 현재 노드에서 작동하므로 선택한 노드 집합에서 멀리 이동하는 데 이 속성을 사용하면 Current 안 됩니다. 이렇게 하면 .XPathNavigator

이 메서드는 XPathNavigator.

적용 대상