Bagikan melalui


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.

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