Kueri dan Namespace JalurX
Kueri JalurX mengetahui namespace layanan dalam dokumen XML dan dapat menggunakan awalan namespace layanan untuk memenuhi syarat elemen & nama atribut. Elemen dan nama atribut yang memenuhi syarat dengan awalan namespace layanan membatasi node yang dikembalikan oleh kueri JalurX hanya untuk node yang termasuk dalam namespace layanan tertentu.
Misalnya jika awalan books
memetakan ke namespace layanan http://www.contoso.com/books
, kueri /books:books/books:book
JalurX berikut hanya memilih elemen tersebut book
di namespace layanan http://www.contoso.com/books
.
XmlNamespaceManager
Untuk menggunakan namespace layanan dalam kueri JalurX, objek yang berasal dari antarmuka IXmlNamespaceResolver seperti kelas XmlNamespaceManager dibangun dengan URI namespace layanan dan awalan untuk disertakan dalam kueri JalurX.
Objek XmlNamespaceManager dapat digunakan dalam kueri dengan setiap cara berikut.
Objek XmlNamespaceManager dikaitkan dengan objek yang ada XPathExpression dengan menggunakan metode SetContext objek XPathExpression. Anda juga dapat mengkompilasi objek baru XPathExpression menggunakan metode statis Compile yang mengambil string yang mewakili ekspresi JalurX dan XmlNamespaceManager objek sebagai parameter dan mengembalikan objek baru XPathExpression.
Objek itu XmlNamespaceManager sendiri diteruskan sebagai parameter ke metode kelas yang menerima XPathNavigator bersama dengan string yang mewakili ekspresi JalurX.
Berikut ini adalah metode XPathNavigator kelas yang menerima objek yang berasal dari IXmlNamespaceResolver antarmuka sebagai parameter.
Namespace Layanan Default
Dalam dokumen XML yang mengikuti, namespace layanan default dengan awalan kosong digunakan untuk mendeklarasikan namespace layanan http://www.contoso.com/books
.
<books xmlns="http://www.contoso.com/books">
<book>
<title>Title</title>
<author>Author Name</author>
<price>5.50</price>
</book>
</books>
JalurX memperlakukan awalan kosong sebagai namespace layanan null
. Dengan kata lain, hanya awalan yang dipetakan ke namespace layanan yang dapat digunakan dalam kueri JalurX. Ini berarti bahwa jika Anda ingin mengkueri terhadap namespace layanan dalam dokumen XML, meski itu adalah namespace layanan default, Anda perlu menentukan awalan untuk itu.
Misalnya, tanpa menentukan awalan untuk dokumen XML di atas, kueri JalurX /books/book
tidak akan mengembalikan hasil apa pun.
Awalan harus terikat untuk mencegah ambiguitas saat mengkueri dokumen dengan beberapa node yang tidak berada di namespace layanan, dan beberapa di namespace layanan default.
Kode berikut menentukan awalan untuk namespace layanan default dan memilih semua elemen book
dari http://www.contoso.com/books
namespace layanan.
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
Dim query As XPathExpression = navigator.Compile("/books:books/books:book")
Dim manager As XmlNamespaceManager = New XmlNamespaceManager(navigator.NameTable)
manager.AddNamespace("books", "http://www.contoso.com/books")
query.SetContext(manager)
Dim nodes As XPathNodeIterator = navigator.Select(query)
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();
XPathExpression query = navigator.Compile("/books:books/books:book");
XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable);
manager.AddNamespace("books", "http://www.contoso.com/books");
query.SetContext(manager);
XPathNodeIterator nodes = navigator.Select(query);
Lihat juga
- XmlDocument
- XPathDocument
- XPathNavigator
- Memproses Data XML Menggunakan Model Data JalurX
- Memilih Data XML Menggunakan XPathNavigator
- Mengevaluasi Ekspresi JalurX menggunakan XPathNavigator
- Mencocokkan Simpul menggunakan XPathurungNavigator
- Jenis Simpul Yang Dikenali dengan Kueri JalurX
- kspresi JalurX yang Dikompilasi