Visual C# kullanarak bir XPath ifadesi XML sorgusuyla nasıl

Makale çevirileri Makale çevirileri
Makale numarası: 308333 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalede, XPathDocument nesneyi XPathNavigator sınıfını kullanarak XML Path Language (XPath) kullanan bir ifade içeren sorgu gösterilmiştir. XPath ifadeleri değerlendirileceği ve bir belgede belirli bir düğüm programsal olarak kullanılır.

Gereksinimler

Aşağıdaki listede, gereksinim duyacağınız donanım, yazılım, ağ altyapısı ve hizmet paketleri önerilmektedir:
  • Visual C#
Bu makalede, aşağıdaki konularda bilgi sahibi olduğunuz varsayılmaktadır:
  • XML terminolojisi
  • Oluşturma ve XML dosyasını okuma
  • XPath sözdizimi

Bir XPath ifadesi XML sorgusu nasıl kullanılır

  1. Bir yeni Visual C# Console Application Visual Studio'da oluşturun.

    Not: Bu örnek Books.xml adlı bir dosya kullanır. Kendi Books.xml dosyanızı oluşturabilirsiniz veya .NET Software Development Kit'e (SDK) Quickstarts ile gelen örnek kullanabilirsiniz. Yüklü Quickstarts vardır ve bunları yüklemek istemiyorsanız, karşıdan yükleme konumu Books.xml için "Başvurular" bölümüne bakın. Yüklü Quickstarts varsa, bu dosya aşağıdaki klasörde bulunabilir:
    Program Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB
    Dosya, bu proje oluşturduğunuz klasörün altında bulunan \Bin\Debug klasöre kopyalamalısınız.
  2. Proje System.XML ad alanı başvurduğu şemada emin olun.
  3. Böylece, kodunuzun daha sonra bu ad boşluklarında bildirimlerinde nitelemek için gerekli değildir kullanarakXML ve XPath ad kullanmak. Aşağıdaki gibi kullanarak deyimi için tüm diğer bildirimlerden önce kullanmalısınız:
    using System.Xml;
    using System.Xml.XPath;
    					
  4. Uygun değişkenleri bildir. XML belgesini tutulacağı XPathDocument nesne, XPath ifadeleri değerlendirileceği XpathNavigator nesne ve seçilen düğümleri arasında dolaşmak için XPathNodeIterator nesne bildirir. XPath ifadeleri tutulacağı bir String nesnesi bildirin. Class1 <a1>ana</a1> işlevindeki bildirim kodu ekleyin.
       XPathNavigator nav;
       XPathDocument docNav;
       XPathNodeIterator NodeIter;
       String strExpression;
    					
  5. Bir XPathDocument Books.xml örnek dosyayı yüklenemedi. Genişletilebilir Stil Sayfası Dil Dönüşümleri (XSLT) XPathDocument sınıfı, XML Belge işleme için hızlı ve performans sağlamaya yönelik bir önbellek sağlamak için kullanır. XML Belge Nesnesi Modeli'ne (DOM) benzer, ancak XPath veri modeli ve XSLT işlem oldukça getirilmiştir.
        // Open the XML.
        docNav = new XPathDocument(@"c:\books.xml");
    					
  6. XPathNavigator bir belgeden oluşturun. XPathNavigator nesnesi, salt okunur XPath sorguları için kullanılır. XPath sorguları, sonuçta elde edilen bir değer ya da birçok düğümlerin döndürebilir.
         // Create a navigator to query with XPath.
         nav = docNav.CreateNavigator();
    					
  7. Kitap ortalama maliyeti bulmak için bir XPath ifadesi oluşturun. Bu bir XPath ifadesi, tek bir değer döndürür. XPath sözdizimi hakkında tam bilgi için "XPath sözdizimi", "Başvurular" bölümü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)";
    					
  8. XPath ifadesini değerlendirmek için XPathNavigator nesnesinin değerlendir yöntemini kullanın. Değerlendir</a0> yöntemi, deyimin 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));
  9. Tüm fazla on ABD Doları maliyet defterlerinden bulmak için bir XPath ifadesi oluşturun. Bu bir XPath ifadesi XML kaynak yalnızca başlık düğümlerin döndürüyor.
        // Find the title of the books that are greater then $10.00.
        strExpression = "/bookstore/book/title[../price>10.00]";
    					
  10. Seçilen düğümlere ait bir XPathNodeIteratorXPathNavigatorSeç yöntemi ile oluşturun. XPathNodeIterator bir XPath nodeset temsil eder ve bu nedenle bu nodeset işlemlerini destekler.
        // Select the node and place the results in an iterator.
        NodeIter = nav.Select(strExpression);
  11. XPathNavigatorSeç yönteminden döndürülen, hangi XPathNodeIterator, seçili düğümleri arasında taşımak için kullanın. Bu durumda, tüm seçilen düğümleri yineleme için XPathNodeIteratorMoveNext yöntemini 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);
      };
    					
  12. Çok fazla meşgul yukarıdaki sonuçları görüntülemek için konsol ekranı, sonunda bir duraklama eklemek için ReadLine yöntemini kullanın.
        // Pause
        Console.ReadLine();
    					
  13. Oluşturup projeyi çalıştırın. Sonuçlar bir konsol penceresinde görüntülenir unutmayın.

SORUN GİDERME

Kodu sınamak için aşağıdaki özel durum hata iletisi alabilirsiniz:
Içinde System.XML.dll 'System.Xml.XmlException' türünde işlenmeyen bir özel durum oluştu

Ek bilgi: sistem hatası.
Aşağıdaki kod satırını üzerinde özel durum hata oluşuyor:
docNav = new XPathDocument("c:\\books.xml");
				
bir geçersiz işlem yönergesi tarafından özel durum hata nedeni. Örneğin, işlem yönergesi, gereksiz boşluklar içerebilir. Bir geçersiz işlem yönergesi örneği aşağıda verilmektedir:
<?xml version='1.0' ?>
özel durumu çözmek için <a0></a0>, aşağıdakilerden birini yapın:
  • Geçersiz işlem yönergesi düzeltin. Bir geçerli işlem yönergesi örneği aşağıda verilmektedir:
    <?xml version='1.0'?>
    - VEYA -
  • XML işleme yönergesi Books.xml dosyasından kaldırın.

Referanslar

Aşağıdaki dosya Microsoft Yükleme Merkezi'nden yüklenebilir:
Bu resmi kapatBu resmi aç
Download
Download Books.xml now
Daha fazla bilgi için aşağıdaki Microsoft Web sitelerini ziyaret edin:
. NET'te XML: .NET Framework XML sınıfları ve C# indirim basit, ölçeklenebilir veri denetleme
http://msdn.microsoft.com/msdnmag/issues/01/01/xml/default.aspx

XPathNavigator sınıfı
http://msdn.microsoft.com/en-us/library/system.xml.xpath.xpathnavigator.aspx

XPathDocument sınıfı
http://msdn.microsoft.com/en-us/library/system.xml.xpath.xpathdocument.aspx

XPathNodeIterator sınıfı
http://msdn.microsoft.com/en-us/library/system.xml.xpath.xpathnodeiterator.aspx

XSLT dönüştürmeleri çok sınıfıyla
http://msdn.microsoft.com/en-us/library/47yh29a9.aspx

XPath sözdizimi
http://msdn2.microsoft.com/en-us/library/ms763742.aspx
XPath hakkında daha fazla bilgi için aşağıdaki World Wide Web Konsorsiyumu (W3C) Web sitesini ziyaret edin:
XML Path Language (XPath)
Sürüm 1.0: W3C önerisi 16 Kasım 1999
http://www.w3.org/TR/1999/REC-xpath-19991116

Özellikler

Makale numarası: 308333 - Last Review: 13 Mart 2008 Perşembe - Gözden geçirme: 7.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ADO.NET 1.0
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Anahtar Kelimeler: 
kbmt kbdownload kbhowtomaster KB308333 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:308333

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com