Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, XML Yol Dili (XPath) ifadesi ve sınıfı kullanılarak bir nesnenin nasıl sorgulandığı XPathDocumentXPathNavigator açıklanır.
XPath, ifadeleri değerlendirmek ve bir belgedeki belirli düğümleri seçmek için program aracılığıyla kullanılır.
Bu makale, Microsoft .NET Framework Sınıf Kitaplığı ad alanı olan System.Xml.XPathöğesine başvurur.
Şunlar için geçerlidir: Visual Studio, .NET Framework
Özgün KB numarası: 308333
Önkoşullar
Bu makalede, aşağıdaki konulara aşina olduğunuz varsayılır:
- Visual C#
- XML terminolojisi
- XML dosyası oluşturma ve okuma
- XPath söz dizimi
XPath ifadesine sahip XPathDocument'i sorgula
Microsoft Visual Studio'da bir Visual C# Konsol Uygulaması oluşturun.
Not
Bu örnekte Books.xmladlı bir dosya kullanılır. Kendi Books.xml dosyanızı oluşturabilir veya .NET Yazılım Geliştirme Seti (SDK) hızlı başlangıçlarına dahil edilen örneği kullanabilirsiniz.
Hızlı başlangıçlar yüklü değilse ve bunları yüklemek istemiyorsanız, Books.xml indirme konumu için "İlgili içerik" bölümüne bakın.
Hızlı başlangıçları yüklediyseniz, Books.xml dosyası klasörde
Program Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transforxml\VBbulunabilir. Dosyayı\Bin\Debug, bu projeyi oluşturduğunuz klasörün alt klasörüne kopyalayabilirsiniz.Projenin ad alanına başvurduğunu
System.Xmldoğrulayın.usingKodunuzda daha sonra bu ad alanlarına ilişkin bildirimleri nitelemeniz gerekmeyecek şekilde veXmlad alanları üzerindeki deyiminiXPathkullanın. deyiminiusingaşağıdaki gibi diğer bildirimlerden önce kullanabilirsiniz:using System.Xml; using System.Xml.XPath;Uygun değişkenleri bildirin. XML belgesini tutacak bir
XPathDocumentnesne, XPath ifadelerini değerlendirmek için birXpathNavigatornesne ve seçili düğümler arasında yinelemek için birXPathNodeIteratornesne bildirin. XPath ifadelerini tutmak için birStringnesne bildirin.Class1içindekiMainişlevine bildirim kodunu ekleyin.XPathNavigator nav; XPathDocument docNav; XPathNodeIterator NodeIter; String strExpression;Books.xmlörnek dosyayla birlikte bir
XPathDocumentyükleyin. sınıfı,XPathDocumentXML belge işleme için hızlı ve performans odaklı bir önbellek sağlamak için Genişletilebilir Stil Sayfası Dil Dönüştürmeleri (XSLT) kullanır. XML Belge Nesne Modeli'ne (DOM) benzer ancak XSLT işleme veXPathveri modeli için yüksek oranda iyileştirilmiştir.// Open the XML. docNav = new XPathDocument(@"c:\books.xml");Belgeden bir
XPathNavigatoroluşturun.XPathNavigatornesnesi salt okunur XPath sorguları için kullanılır. XPath sorguları sonuçta elde edilen bir değer veya birçok düğüm döndürebilir.// Create a navigator to query with XPath. nav = docNav.CreateNavigator();Bir kitabın ortalama maliyetini bulmak için bir XPath ifadesi oluşturun. Bu XPath ifadesi tek bir değer döndürür. XPath söz dizimi hakkında tüm ayrıntılar için "Başvurular" bölümündeki XPath Söz Dizimi'ne bakın.
// Find the average cost of a book. // This expression uses standard XPath syntax. strExpression = "sum(/bookstore/book/price) div count(/bookstore/book/price)";EvaluateXPath ifadesini değerlendirmek için nesnesinin yönteminiXPathNavigatorkullanın. yöntemi,Evaluateifadenin sonuçlarını döndürür.// Use the Evaluate method to return the evaluated expression. Console.WriteLine("The average cost of the books are {0}", nav.Evaluate(strExpression));10 dolardan daha pahalı olan tüm kitapları bulmak için bir XPath ifadesi oluşturun. Bu XPath ifadesi yalnızca XML kaynağındaki Başlık düğümlerini döndürür.
// Find the title of the books that are greater then $10.00. strExpression = "/bookstore/book/title[../price>10.00]";Seçilen düğümlerle birlikte
XPathNavigator'ninSelectyöntemi ile birXPathNodeIteratoroluşturun. birXPathNodeIteratorXPath düğüm kümesini temsil eder ve bu düğüm kümesindeki işlemleri destekler.// Select the node and place the results in an iterator. NodeIter = nav.Select(strExpression);Seçili düğümler arasında gezinmek için
XPathNavigatoryöntemiyle döndürülenSelectöğesini veXPathNodeIteratorkullanın. Bu durumda,XPathNodeIteratornesnesininMoveNextyöntemini tüm seçili düğümler arasında yineleme yapmak için kullanabilirsiniz.Console.WriteLine("List of expensive books:"); //Iterate through the results showing the element value. while (NodeIter.MoveNext()) { Console.WriteLine("Book Title: {0}", NodeIter.Current.Value); };ReadLineyöntemini kullanarak önceki adımlardan gelen sonuçları daha kolay görüntüleyebilmek için konsol ekranının sonuna bir duraklama ekleyin.// Pause Console.ReadLine();Projenizi derleyin ve çalıştırın.
Not
Sonuçlar konsol penceresinde görüntülenir.
Sorun giderme
Kodu test ettiğinizde aşağıdaki özel durum hata iletisini alabilirsiniz:
An unhandled exception of type System.Xml.XmlException occurred in System.xml.dll
Additional information: System error.
Bu özel durum aşağıdaki kod satırında oluşur:
docNav = new XPathDocument("c:\\books.xml");
Hataya geçersiz bir işleme yönergesi neden oluyor. Örneğin, işleme yönergesi gereksiz boşluklar içerebilir. Aşağıdaki örnek geçersiz bir işleme yönergesidir:
<?xml version='1.0' ?>
Özel durumu çözmek için aşağıdaki çözümlerden birini kullanın:
Geçersiz işleme yönergesini düzeltin. Aşağıdaki örnek geçerli bir işleme yönergesidir:
<?xml version='1.0'?>XML işleme yönergesini Books.xml dosyasından kaldırın.