다음을 통해 공유


XPathNavigator를 사용하여 XPath 식 계산

XPathNavigator 클래스는 XPath 식을 계산하는 Evaluate 메서드를 제공합니다. Evaluate 메서드는 XPath 식을 가져와서 계산하고 XPath 식 결과를 기준으로 부울, 숫자, 문자열, 노드 집합 등의 W3C XPath 형식을 반환합니다.

Evaluate 메서드

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() 함수가 위치 단계에서 조건자로 사용되지 않을 경우 이를 계산하기 위해서는 노드 집합에 대한 참조가 필요합니다. 그렇지 않으면 positionlast 함수는 0을 반환합니다.

참고 항목