다음을 통해 공유


XPathNavigator를 사용하여 XPath 표현식 평가

클래스는 XPathNavigator XPath 식을 평가하는 메서드를 제공합니다 Evaluate . 이 메서드는 Evaluate XPath 식을 사용하고, 계산하고, XPath 식의 결과에 따라 부울, 숫자, 문자열 또는 노드 집합의 W3C XPath 형식을 반환합니다.

평가 메서드

Evaluate 메서드는 XPath 식을 평가하여 부울(Boolean), 숫자(Double), 문자열(String) 또는 노드 집합(XPathNodeIterator)의 형식화된 결과를 반환합니다. 예를 들어 이 메서드는 Evaluate 수학 메서드에서 사용할 수 있습니다. 다음 예제 코드는 파일에 있는 모든 책의 총 가격을 계산합니다 books.xml .

Dim document As XPathDocument = New XPathDocument("books.xml")  
Dim navigator As XPathNavigator = document.CreateNavigator()  
  
Dim query As XPathExpression = navigator.Compile("sum(//price/text())")  
Dim total As Double = CType(navigator.Evaluate(query), Double)  
Console.WriteLine(total)  
XPathDocument document = new XPathDocument("books.xml");  
XPathNavigator navigator = document.CreateNavigator();  
  
XPathExpression query = navigator.Compile("sum(//price/text())");  
Double total = (Double)navigator.Evaluate(query);  
Console.WriteLine(total);  

이 예제에서는 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>

position 및 last 함수

Evaluate 메서드가 오버로드됩니다. 메서드 중 Evaluate 하나는 개체를 XPathNodeIterator 매개 변수로 사용합니다. 이 특정 Evaluate 메서드는 노드 집합 인수가 평가를 수행할 현재 컨텍스트를 지정할 수 있다는 점을 제외하고 개체만 Evaluate 매개 변수로 사용하는 메서드와 동일합니다XPathExpression. 이 컨텍스트는 XPath position()last() 함수가 현재 컨텍스트 노드를 기준으로 하기 때문에 필요합니다. 위치 단계에서 술어로 사용되지 않는 한, `position()` 함수와 `last()` 함수는 평가를 위해 노드 집합에 대한 참조가 필요하며, 그렇지 않으면 `position` 및 `last` 함수가 `0`을 반환합니다.

참고하십시오