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.
Kelas XPathNavigator ini menyediakan dua set metode navigasi, set pertama, yang ditemukan di topik Navigasi Set Simpul Menggunakan XPathNavigator, digunakan untuk menavigasi kumpulan simpul dalam objek XPathDocument atau XmlDocument. Set kedua, yang dijelaskan dalam topik ini, digunakan untuk menavigasi atribut dan node namespace dalam objek XPathDocument atau XmlDocument .
Navigasi Atribut Node
Atribut adalah properti elemen, bukan turunan dari elemen. Perbedaan ini penting, karena metode dari kelas XPathNavigator digunakan untuk menavigasi simpul saudara kandung, induk, dan anak.
Misalnya, MoveToPrevious metode dan MoveToNext tidak digunakan untuk menavigasi dari elemen ke atribut atau antar atribut. Sebaliknya, atribut memiliki metode navigasi yang berbeda.
Berikut ini adalah metode navigasi atribut dari kelas XPathNavigator.
Ketika node saat ini adalah elemen, Anda dapat menggunakan HasAttributes properti untuk melihat apakah ada atribut yang terkait dengan elemen . Setelah diketahui bahwa elemen memiliki atribut, ada beberapa metode untuk mengakses atribut. Untuk mengambil atribut tunggal dari elemen , gunakan GetAttribute metode . Untuk memindahkan XPathNavigator ke atribut tertentu, gunakan metode MoveToAttribute. Anda juga dapat melakukan iterasi pada setiap atribut elemen dengan menggunakan MoveToFirstAttribute metode , diikuti dengan beberapa panggilan ke MoveToNextAttribute metode .
Nota
Ketika objek XPathNavigator diposisikan pada atribut atau node namespace, metode MoveToChild, MoveToFirst, MoveToFirstChild, MoveToFollowing, MoveToId, MoveToNext, dan MoveToPrevious selalu mengembalikan false, dan tidak berpengaruh pada posisi XPathNavigator. Pengecualiannya adalah MoveTometode , MoveToParent, dan MoveToRoot .
Navigasi Node Namespace
Setiap elemen memiliki sekumpulan node namespace terkait, satu untuk setiap awalan namespace berbeda yang terikat ke URI namespace dalam cakupan untuk elemen (termasuk awalan XML yang terikat ke http://www.w3.org/XML/1998/namespace namespace, yang secara implisit dideklarasikan dalam setiap dokumen XML) dan satu untuk namespace default jika ada dalam cakupan untuk elemen. Elemen ini adalah induk dari masing-masing node namespace ini; namun, node namespace bukan anak dari elemen induknya.
Seperti halnya atribut, metode MoveToPrevious dan MoveToNext tidak digunakan untuk menavigasi dari elemen ke node namespace, atau di antara node-node namespace. Sebagai gantinya, simpul namespace memiliki metode navigasi yang berbeda.
Metode navigasi namespace dari kelas XPathNavigator adalah sebagai berikut.
Selalu ada setidaknya satu simpul namespace dalam cakupan untuk elemen apa pun dalam dokumen XML. Ini adalah node namespace dengan awalan xml dan namespace URI http://www.w3.org/XML/1998/namespace. Untuk mengambil URI namespace dalam cakupan yang diberikan awalan tertentu, gunakan GetNamespace metode. Untuk memindahkan XPathNavigator objek ke simpul namespace tertentu, gunakan metode .MoveToNamespace Anda juga dapat melakukan iterasi pada setiap node namespace dalam cakupan elemen dengan menggunakan metode MoveToFirstNamespace diikuti dengan beberapa panggilan ke metode MoveToNextNamespace.
Nota
Ketika objek XPathNavigator diposisikan pada atribut atau node namespace, metode MoveToChild, MoveToFirst, MoveToFirstChild, MoveToFollowing, MoveToId, MoveToNext, dan MoveToPrevious selalu mengembalikan false, dan tidak berpengaruh pada posisi XPathNavigator. Pengecualiannya adalah MoveTometode , MoveToParent, dan MoveToRoot .
Enumerasi XPathNamespaceScope
Saat menavigasi node namespace, metode MoveToFirstNamespace dan MoveToNextNamespace dapat dipanggil dengan parameter XPathNamespaceScope. Metode ini berperilaku berbeda dari rekannya yang dipanggil tanpa parameter. XPathNamespaceScope Enumerasi memiliki nilai All, , ExcludeXmlatau Local.
Contoh berikut menunjukkan namespace apa yang dikembalikan oleh metode MoveToFirstNamespace dan MoveToNextNamespace pada berbagai cakupan dalam dokumen XML.
<root>
<element1 xmlns="http://www.contoso.com" xmlns:books="http://www.contoso.com/books">
<element2 />
</element1>
</root>
Urutan namespace (namespace tempat XPathNavigator diposisikan setelah memanggil metode MoveToFirstNamespace diikuti dengan serangkaian pemanggilan metode MoveToNextNamespace) adalah sebagai berikut.
Ketika diposisikan pada
element2:xmlns:books="http://www.contoso.com/books",xmlns="http://www.contoso.com", danxmlns:xml="http://www.w3.org/XML/1998/namespace".Ketika diposisikan pada
element1:xmlns:books="http://www.contoso.com/books",xmlns="http://www.contoso.com", danxmlns:xml="http://www.w3.org/XML/1998/namespace".Ketika diposisikan pada
root:xmlns:xml="http://www.w3.org/XML/1998/namespace".
Nota
Kelas XPathNavigator mengembalikan simpul namespace dalam urutan dokumen terbalik. Oleh karena itu, MoveToFirstNamespace pada dasarnya pindah ke node namespace terakhir dalam cakupan saat ini.
Contoh berikut menunjukkan namespace apa yang dikembalikan oleh metode MoveToFirstNamespace dan MoveToNextNamespace dengan enumerasi XPathNamespaceScope yang ditentukan pada berbagai tingkatan cakupan dalam dokumen XML.
<root xmlns="http://www.contoso.com" xmlns:a="http://www.contoso.com/a" xmlns:b="http://www.contoso.com/b">
<child1 xmlns="" xmlns:a="urn:a">
<child2 xmlns:c="urn:c" />
</child1>
</root>
Ketika diposisikan pada child2, urutan namespace (namespace yang XPathNavigator diposisikan setelah memanggil metode MoveToFirstNamespace diikuti dengan serangkaian panggilan ke metode MoveToNextNamespace) adalah sebagai berikut.
All:
xmlns:c="urn:c",xmlns:a="urn:a",xmlns="",xmlns:b="http://www.contoso.com/b",xmlns:a="http://www.contoso.com/a",xmlns="http://www.contoso.com", danxmlns:xml="http://www.w3.org/XML/1998/namespace".ExcludeXml:
xmlns:c="urn:c",xmlns:a="urn:a",xmlns="",xmlns:b="http://www.contoso.com/b",xmlns:a="http://www.contoso.com/a", danxmlns="http://www.contoso.com".Local: .
xmlns:c="urn:c"
Nota
Kelas XPathNavigator mengembalikan simpul namespace dalam urutan dokumen terbalik. Oleh karena itu, MoveToFirstNamespace pada dasarnya pindah ke node namespace terakhir dalam cakupan saat ini.