XPath Sorguları ve Ad Alanları
XPath sorguları bir XML belgesindeki ad alanlarının farkındadır ve öğe ve öznitelik adlarını nitelemek için ad alanı ön eklerini kullanabilir. Ad alanı ön ekine sahip öğe ve öznitelik adlarının nitelenmesi, XPath sorgusu tarafından döndürülen düğümleri yalnızca belirli bir ad alanına ait düğümlerle sınırlar.
Örneğin, ön ek books
ad alanına http://www.contoso.com/books
eşlerse, aşağıdaki XPath sorgusu /books:books/books:book
yalnızca book
ad http://www.contoso.com/books
alanındaki öğeleri seçer.
The XmlNamespaceManager
Bir XPath sorgusunda ad alanlarını kullanmak için, sınıfı gibi XmlNamespaceManager arabirimden IXmlNamespaceResolver türetilen bir nesne, XPath sorgusuna eklenecek ad alanı URI'si ve ön eki ile oluşturulur.
XmlNamespaceManager Nesnesi sorguda aşağıdaki yollardan her birinde kullanılabilir.
XmlNamespaceManager nesnesi, nesnesinin SetContext yöntemi XPathExpression kullanılarak var olan XPathExpression bir nesneyle ilişkilendirilir. Ayrıca, XPath ifadesini temsil eden bir dizeyi ve bir nesneyi parametre olarak alan ve yeni XPathExpression bir nesne döndüren statik Compile yöntemi kullanarak yeni XPathExpression bir nesne derleyebilirsinizXmlNamespaceManager.
Nesnenin XmlNamespaceManager kendisi, XPath ifadesini temsil eden bir dizeyle birlikte kabul eden XPathNavigator bir sınıf yöntemine parametre olarak geçirilir.
Aşağıda, sınıfın XPathNavigator arabirimden IXmlNamespaceResolver türetilmiş bir nesneyi parametre olarak kabul eden yöntemleri yer alır.
Varsayılan Ad Alanı
Aşağıdaki XML belgesinde, ad alanını bildirmek http://www.contoso.com/books
için boş ön eke sahip varsayılan ad alanı kullanılır.
<books xmlns="http://www.contoso.com/books">
<book>
<title>Title</title>
<author>Author Name</author>
<price>5.50</price>
</book>
</books>
XPath boş ön eki ad alanı olarak ele alır null
. Başka bir deyişle, XPath sorgularında yalnızca ad alanlarına eşlenen ön ekler kullanılabilir. Başka bir deyişle, XML belgesindeki bir ad alanına karşı sorgu yapmak istiyorsanız, varsayılan ad alanı olsa bile, bunun için bir ön ek tanımlamanız gerekir.
Örneğin, yukarıdaki XML belgesi için bir ön ek tanımlamadan XPath sorgusu /books/book
hiçbir sonuç döndürmez.
Bazı düğümleri ad alanında olmayan ve bazıları varsayılan ad alanında olan belgeleri sorgularken belirsizliği önlemek için bir ön ek bağlanmalıdır.
Aşağıdaki kod, varsayılan ad alanı için bir ön ek tanımlar ve ad alanındaki book
tüm öğeleri http://www.contoso.com/books
seçer.
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);
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
- Derlenmiş XPath İfadeleri
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