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 //book
daha 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.
- XmlDocument
- XPathDocument
- XPathNavigator
- XPath Veri Modelini Kullanarak XML Verilerini İşleme
- XPathNavigator Kullanarak XML Verileri Seçme
- XPathNavigator Kullanarak XPath İfadelerini Değerlendirme
- XPathNavigator Kullanarak Düğümleri Eşleştirme
- XPath Sorguları ile Tanınan Düğüm Türleri
- XPath Sorguları ve Ad Alanları
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin