Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Objek XPathExpression mewakili kueri XPath yang dikompilasi yang dikembalikan dari metode statis Compile dari kelas XPathExpression atau metode Compile dari kelas XPathNavigator.
Kelas XPathExpression
Kueri XPath yang dikompilasi yang diwakili oleh XPathExpression objek berguna jika kueri XPath yang sama sedang digunakan lebih dari sekali.
Misalnya, saat memanggil Select metode beberapa kali, alih-alih menggunakan string yang mewakili kueri XPath setiap kali, gunakan Compile metode XPathExpression kelas atau Compile metode XPathNavigator kelas untuk mengkompilasi dan menyimpan kueri XPath dalam XPathExpression objek untuk digunakan kembali dan meningkatkan performa.
Setelah dikompilasi XPathExpression , objek dapat digunakan sebagai input ke metode kelas berikut XPathNavigator tergantung pada jenis yang dikembalikan dari kueri XPath.
Tabel berikut menjelaskan masing-masing jenis pengembalian W3C XPath, kesetaraan Microsoft .NET Framework, dan metode XPathExpression apa yang dapat digunakan objek berdasarkan jenis pengembaliannya.
| Tipe Pengembalian W3C XPath | Tipe Setara dalam .NET Framework | Deskripsi | Metode |
|---|---|---|---|
Node set |
XPathNodeIterator | Kumpulan simpul tidak berurutan tanpa duplikat yang dihasilkan sesuai urutan dokumen. | Select atau Evaluate |
Boolean |
Boolean | Nilai A true atau false. |
Evaluate atau Matches |
Number |
Double | Angka titik mengambang. | Evaluate |
String |
String | Urutan karakter UCS. | Evaluate |
Nota
Metode Matches ini menerima ekspresi XPath sebagai parameternya. Metode ini mengembalikan objek SelectSingleNode, bukan salah satu jenis pengembalian W3C XPath.
Properti ReturnType
Setelah kueri XPath dikompilasi ke dalam XPathExpression objek, Anda bisa menggunakan ReturnType properti XPathExpression objek untuk menentukan apa yang dikembalikan kueri XPath.
Properti ReturnType mengembalikan salah satu nilai enumerasi berikut yang XPathResultType mewakili jenis pengembalian W3C XPath.
Contoh berikut menggunakan objek XPathExpression untuk mengembalikan angka dan set nod dari berkas books.xml. Properti ReturnType dari setiap objek XPathExpression, beserta hasil dari metode Evaluate dan Select, ditampilkan di konsol.
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);
Contoh mengambil file books.xml sebagai input.
<?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>
Ekspresi XPath Berkinerja Lebih Tinggi
Untuk performa yang lebih baik, gunakan ekspresi XPath paling spesifik yang mungkin dalam kueri Anda. Misalnya, jika simpul book adalah simpul anak dari simpul bookstore dan simpul bookstore adalah elemen paling atas dalam dokumen XML, menggunakan ekspresi XPath /bookstore/book lebih cepat daripada menggunakan //book. Ekspresi //book XPath akan memindai setiap simpul di pohon XML untuk mengidentifikasi simpul yang cocok.
Selain itu, menggunakan metode navigasi set simpul yang disediakan oleh kelas XPathNavigator dapat meningkatkan performa dibandingkan metode pemilihan yang disediakan oleh kelas XPathNavigator jika kriteria pemilihan Anda sederhana. Misalnya, jika Anda perlu memilih anak pertama dari simpul saat ini, lebih cepat menggunakan metode MoveToFirst daripada menggunakan ekspresi XPath child::*[1] dan metode Select.
Untuk informasi lebih lanjut tentang metode navigasi set simpul dari kelas XPathNavigator, lihat Navigasi Set Simpul Menggunakan XPathNavigator.