XPathExpression 객체는 Compile 클래스의 정적 XPathExpression 메서드 또는 Compile 클래스의 XPathNavigator 메서드에서 반환된 컴파일된 XPath 쿼리를 나타냅니다.
XPathExpression 클래스
개체가 나타내는 컴파일된 XPathExpression XPath 쿼리는 동일한 XPath 쿼리를 두 번 이상 사용하는 경우에 유용합니다.
예를 들어 메서드를 Select 여러 번 호출할 때 매번 XPath 쿼리를 나타내는 문자열을 사용하는 대신 클래스의 Compile 메서드 또는 XPathExpression 클래스 메서드 Compile 를 사용하여 XPathNavigator 재사용 및 성능 향상을 위해 개체에서 XPathExpression XPath 쿼리를 컴파일하고 캐시합니다.
컴파일된 후에는 XPathExpression XPath 쿼리에서 반환된 형식에 따라 다음 XPathNavigator 클래스 메서드에 대한 입력으로 개체를 사용할 수 있습니다.
다음 표에서는 각 W3C XPath 반환 형식, Microsoft .NET Framework 동등성 및 반환 형식에 따라 개체를 사용할 수 있는 메서드 XPathExpression 에 대해 설명합니다.
W3C XPath 반환 형식 | .NET Framework 해당 형식 | 설명 | 메서드 |
---|---|---|---|
Node set |
XPathNodeIterator | 문서 순서에 따라 중복되지 않은 노드의 비순차적 컬렉션입니다. | Select 또는 Evaluate |
Boolean |
Boolean |
true 또는 false 값입니다. |
Evaluate 또는 Matches |
Number |
Double | 부동 소수점 숫자입니다. | Evaluate |
String |
String | UCS 문자 시퀀스입니다. | Evaluate |
비고
메서드는 Matches XPath 식을 해당 매개 변수로 허용합니다. 이 메서드 SelectSingleNode 는 XPathNavigator W3C XPath 반환 형식 중 하나가 아닌 개체를 반환합니다.
ReturnType 속성
XPath 쿼리가 개체로 XPathExpression 컴파일된 후 개체의 ReturnType 속성을 사용하여 XPathExpression XPath 쿼리가 반환하는 항목을 확인할 수 있습니다.
이 속성은 ReturnType W3C XPath 반환 형식을 나타내는 다음 XPathResultType 열거형 값 중 하나를 반환합니다.
다음 예제는 XPathExpression 객체를 사용하여 books.xml
파일에서 숫자와 노드 집합을 반환합니다.
ReturnType 각 XPathExpression 개체의 속성과 그 결과 Evaluate 및 Select 메서드가 콘솔에 기록됩니다.
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
' Returns a number.
Dim query1 As XPathExpression = navigator.Compile("bookstore/book/price/text()*10")
Console.WriteLine(query1.ReturnType)
Dim number As Double = CType(navigator.Evaluate(query1), Double)
Console.WriteLine(number)
' Returns a node set.
Dim query2 As XPathExpression = navigator.Compile("bookstore/book/price")
Console.WriteLine(query2.ReturnType)
Dim nodes As XPathNodeIterator = navigator.Select(query2)
nodes.MoveNext()
Console.WriteLine(nodes.Current.Value)
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();
// Returns a number.
XPathExpression query1 = navigator.Compile("bookstore/book/price/text()*10");
Console.WriteLine(query1.ReturnType);
Double number = (Double)navigator.Evaluate(query1);
Console.WriteLine(number);
// Returns a node set.
XPathExpression query2 = navigator.Compile("bookstore/book/price");
Console.WriteLine(query2.ReturnType);
XPathNodeIterator nodes = navigator.Select(query2);
nodes.MoveNext();
Console.WriteLine(nodes.Current.Value);
이 예제에서는 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>
고성능의 XPath 표현식
성능을 향상시키려면 쿼리에서 가능한 가장 구체적인 XPath 식을 사용합니다. 예를 들어 노드가 book
노드의 bookstore
자식 노드이고 bookstore
노드가 XML 문서에서 최상위 요소인 경우 XPath 식을 /bookstore/book
사용하는 것이 사용 //book
보다 빠릅니다. XPath 식은 //book
XML 트리의 모든 노드를 검색하여 일치하는 노드를 식별합니다.
또한 클래스에서 제공하는 노드 집합 탐색 메서드를 XPathNavigator 사용하면 선택 조건이 간단한 경우 클래스에서 제공하는 XPathNavigator 선택 메서드에 대한 성능이 향상될 수 있습니다. 예를 들어, 현재 노드의 첫 번째 자식을 선택해야 하는 경우 MoveToFirst XPath 표현식과 child::*[1]
메서드를 사용하는 것보다 Select 메서드를 사용하는 것이 더 빠릅니다.
클래스의 XPathNavigator 노드 집합 탐색 메서드에 대한 자세한 내용은 XPathNavigator를 사용하여 노드 집합 탐색을 참조하세요.
참고하십시오
.NET