Visual Basic kullanarak XPathNavigator sınıfıyla XML'de gezinme

Bu makalede, Visual Basic 2005 veya Visual Basic .NET'te sınıfını kullanarak XPathNavigator XML'de gezinmek için bazı örnek adımlar ve örnek kod açıklanmaktadır.

Orijinal ürün sürümü: Visual Basic 2005, Visual Basic .NET
Özgün KB numarası: 301111

Özet

Bu adım adım makalede, bir nesneden XPathDocument oluşturulan bir XPathNavigator nesneyle Genişletilebilir Biçimlendirme Dili (XML) belgelerinde gezinme işlemi gösterilmektedir. Bu örnek, XML verileriyle bir XPathDocument nesneyi yükler, veriler üzerinde görünüm olarak bir XPathNavigator nesne oluşturur ve belge üzerinde ilerleyerek XML'yi görüntüler.

Bu makalenin Microsoft Visual C# sürümü için bkz. XPathNavigator sınıfıyla XML belgelerinde gezinmek için Visual C# kullanma.

Gereksinimler

Aşağıdaki listede ihtiyacınız olan önerilen donanım, yazılım, ağ altyapısı ve hizmet paketleri özetlenmiştir:

  • Windows Server 2003, Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server veya Windows NT 4.0 Server
  • Visual Studio 2005 veya Visual Studio .NET

Bu makalede, aşağıdaki konular hakkında bilgi sahibi olduğunuz varsayılır:

  • XML terminolojisi
  • XML dosyaları oluşturma ve okuma
  • XML Yol Dili (XPath) söz dizimi

XML'de gezinmek için XPathNavigator sınıfını kullanma

  1. Visual Studio 2005 veya Visual Studio'da. NET, bir Visual Basic 2005 veya Visual Basic .NET 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üyse, Books.xml klasöründe bulunur: \Program Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB

    Alternatif olarak, şu adresi ziyaret ederek bu dosyayı alabilirsiniz: Örnek XML Dosyası (books.xml)

    Books.xml\Bin\Debug bu projeyi oluşturduğunuz klasörün altında bulunan klasöre kopyalamanız gerekir.

  2. Projenin ad alanına başvurduğundan System.Xml emin olun.

  3. Imports Kodunuzda daha sonra bu ad alanlarına bildirimleri nitelemeniz gerekmemesi için ve XPath ad alanları üzerindeki deyimini Xml kullanın. Diğer bildirimlerden önce deyimini Imports kullanmanız gerekir.

    Imports System.Xml
    Imports System.Xml.XPath
    
  4. Uygun değişkenleri bildirin. XML belgesini tutacak bir XPathDocument nesne ve XPath ifadelerini değerlendirmek ve belgede gezinmek için bir XPathNavigator nesne bildirin. XPath ifadesini tutmak için bir String nesnesi bildirin. Bildirim kodunu Modül1'deki Main yordamına ekleyin.

    Dim nav As XPathNavigator
    Dim docNav As XPathDocument
    
  5. Örnek dosyasıyla Books.xmlbir XPathDocument nesne yükleyin. sınıfı, XPathDocument XML belge işleme için hızlı ve performans odaklı bir önbellek sağlamak için Genişletilebilir Stil Sayfası Dil Dönüşümleri 'ni (XSLT) kullanır. XML Belge Nesne Modeli'ne (DOM) benzer ancak XSLT işleme ve XPath veri modeli için son derece iyileştirilmiştir.

    'Open the XML.
    docNav = New XPathDocument("books.xml")
    
  6. Belgeden bir XPathNavigator nesne oluşturun. XPathNavigator bir XML belgesindeki hem öznitelik düğümleri hem de ad alanı düğümleri arasında hareket etmenizi sağlar.

    'Create a navigator to query with XPath.
    nav = docNav.CreateNavigator
    
  7. yöntemiyle belgenin köküne MoveToRoot gitme. MoveToRoot gezgin, düğüm ağacının tamamını içeren belge düğümüne ayarlar.

    'Initial XPathNavigator to start at the root.
    nav.MoveToRoot()
    
  8. XML belgesinin MoveToFirstChild alt öğelerine gitmek için yöntemini kullanın. MoveToFirstChild yöntemi geçerli düğümün ilk alt öğesine taşınır. Kaynak söz konusu olduğunda Books.xml kök belgeden alt öğelere, bölüme Comment ve Bookstore düğümüne geçiyorsunuz.

    'Move to the first child node (comment field).
    nav.MoveToFirstChild()
    
  9. Eşdüzey düzeyde düğümler MoveToNext arasında yineleme yapmak için yöntemini kullanın. yöntemi geçerli MoveToNext düğümün bir sonraki eşdüzeyine taşınır.

    'Loop through all the root nodes.
    Do
    ...
    Loop While nav.MoveToNext
    
  10. NodeType Yalnızca öğe düğümlerini işlediğinizden emin olmak için özelliğini kullanın ve öğesinin Value metin gösterimini görüntülemek için özelliğini kullanın.

    Do
    'Find the first element.
    If nav.NodeType = XPathNodeType.Element Then
    'If children exist.
    If nav.HasChildren Then
    
    'Move to the first child.
    nav.MoveToFirstChild()'Loop through all the children.
    Do
    'Display the data.
    Console.Write("The XML string for this child ")
    Console.WriteLine("is '{0}'", nav.Value)
    Loop While nav.MoveToNext
    
    End If
    End If
    Loop While nav.MoveToNext
    
  11. Bir düğümün HasAttributes öznitelikleri olup olmadığını belirlemek için özelliğini kullanın. Bir özniteliğe gitmek ve değerini incelemek için gibi MoveToNextAttributediğer yöntemleri de kullanabilirsiniz.

    Not

    Bu kod kesimi yalnızca kök düğümün alt öğelerinde yol gösterir ve tüm ağaçta değil.

    Do
    'Find the first element.
    If nav.NodeType = XPathNodeType.Element Then
    'if children exist
    If nav.HasChildren Then
    
    'Move to the first child.
    nav.MoveToFirstChild()'Loop through all the children.
    Do
    'Display the data.
    Console.Write("The XML string for this child ")
    Console.WriteLine("is '{0}'", nav.Value)'Check for attributes.
    If nav.HasAttributes Then
    Console.WriteLine("This node has attributes")
    End If
    Loop While nav.MoveToNext
    
    End If
    End If
    Loop While nav.MoveToNext
    
  12. ReadLine Yukarıdaki sonuçları daha hazır bir şekilde görüntülemek için konsol ekranının sonuna bir duraklama eklemek için nesnesinin yöntemini Console kullanın.

    'Pause.
    Console.ReadLine()
    
  13. Konsol Uygulaması projenizi derleyin ve çalıştırın.

Tam kod listesi

Imports System.Xml
Imports System.Xml.XPath

Module Module1

Sub Main()
Dim nav As XPathNavigator
Dim docNav As XPathDocument
docNav = New XPathDocument("books.xml")
nav = docNav.CreateNavigator
nav.MoveToRoot()'Move to the first child node (comment field).
nav.MoveToFirstChild()

Do
'Find the first element.
If nav.NodeType = XPathNodeType.Element Then
'if children exist
If nav.HasChildren Then

'Move to the first child.
nav.MoveToFirstChild()'Loop through all the children.
Do
'Display the data.
Console.Write("The XML string for this child ")
Console.WriteLine("is '{0}'", nav.Value)'Check for attributes.
If nav.HasAttributes Then
Console.WriteLine("This node has attributes")
End If
Loop While nav.MoveToNext

End If
End If
Loop While nav.MoveToNext

'Pause.
Console.ReadLine()

End Sub

End Module

Başvurular