Derlenmiş XPath İfadeleri

NesneXPathExpression, sınıfın statik Compile yönteminden veya Compile sınıfının yönteminden XPathExpression döndürülen derlenmiş bir XPath sorgusunu XPathNavigator temsil eder.

XPathExpression Sınıfı

Bir nesne tarafından temsil edilen derlenmiş XPath XPathExpression sorgusu, aynı XPath sorgusu birden çok kez kullanılıyorsa kullanışlıdır.

Örneğin, yöntemini birden çok kez çağırırkenSelect, XPath sorgusunu her seferinde temsil eden bir dize kullanmak yerine, yeniden kullanım ve geliştirilmiş performans için XPath sorgusunu derlemek ve önbelleğe XPathExpression almak için sınıfının yöntemini veya Compile sınıfın XPathNavigator yöntemini kullanın CompileXPathExpression.

Derlendiğinde, XPathExpression nesnesi XPath sorgusundan döndürülen türe bağlı olarak aşağıdaki XPathNavigator sınıf yöntemlerine giriş olarak kullanılabilir.

Aşağıdaki tabloda W3C XPath dönüş türlerinin her biri, bunların Microsoft .NET Framework eşdeğerleri ve nesnenin XPathExpression dönüş türüne göre hangi yöntemlerle kullanılabileceğini açıklanmaktadır.

W3C XPath Dönüş Türü .NET Framework Eşdeğer Türü Açıklama Yöntemler
Node set XPathNodeIterator Belge sırasına göre yinelenenler oluşturulmayan sıralanmamış bir düğüm koleksiyonu. Select veya Evaluate
Boolean Boolean Bir true veya false değeri. Evaluate veya

Matches
Number Double Kayan noktalı sayı. Evaluate
String String UCS karakterleri dizisi. Evaluate

Not

Matches yöntemi, parametresi olarak bir XPath ifadesi kabul eder. SelectSingleNode yöntemi, W3C XPath dönüş türlerinden birini değil bir XPathNavigator nesneyi döndürür.

ReturnType Özelliği

Bir XPath sorgusu bir XPathExpression nesnede derlendikten sonra, XPath sorgusunun XPathExpression ne döndüreceğini belirlemek için nesnesinin özelliğini kullanabilirsinizReturnType.

özelliği, ReturnType W3C XPath dönüş türlerini temsil eden aşağıdaki XPathResultType numaralandırma değerlerinden birini döndürür.

Aşağıdaki örnek, dosyasından XPathExpression bir sayı ve düğüm kümesi döndürmek books.xml için nesnesini kullanır. ReturnType Her XPathExpression nesnenin özelliği ve yöntemlerinden elde EvaluateSelect edilir ve sonuçları konsola yazılır.

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

Örnek, dosyayı giriş olarak alır 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>

Daha Yüksek Performanslı XPath İfadeleri

Daha iyi performans için sorgularınızda mümkün olan en özel XPath ifadesini kullanın. Örneğin, düğüm düğümün book alt düğümüyse bookstore ve bookstore düğüm xml belgesindeki en üst öğeyse, XPath ifadesini /bookstore/book kullanmak kullanmak kullanmaktan //bookdaha hızlıdır. //book XPath ifadesi, eşleşen düğümleri tanımlamak için XML ağacındaki her düğümü tarar.

Ayrıca, sınıf tarafından sağlanan düğüm kümesi gezinti yöntemlerinin XPathNavigator kullanılması, seçim ölçütlerinizin basit olduğu durumlarda sınıf tarafından XPathNavigator sağlanan seçim yöntemleri üzerinde gelişmiş performansa neden olabilir. Örneğin, geçerli düğümün ilk alt öğesini seçmeniz gerekiyorsa, yöntemini kullanmak MoveToFirst XPath ifadesini ve Select yöntemini kullanmaktan child::*[1] daha hızlıdır.

Sınıfının düğüm kümesi gezinti yöntemleri XPathNavigator hakkında daha fazla bilgi için bkz . XPathNavigator Kullanarak Düğüm Kümesi Gezintisi.

Ayrıca bkz.