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
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.Projenin ad alanına başvurduğundan
System.Xml
emin olun.Imports
Kodunuzda daha sonra bu ad alanlarına bildirimleri nitelemeniz gerekmemesi için veXPath
ad alanları üzerindeki deyiminiXml
kullanın. Diğer bildirimlerden önce deyiminiImports
kullanmanız gerekir.Imports System.Xml Imports System.Xml.XPath
Uygun değişkenleri bildirin. XML belgesini tutacak bir
XPathDocument
nesne ve XPath ifadelerini değerlendirmek ve belgede gezinmek için birXPathNavigator
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
Örnek dosyasıyla
Books.xml
birXPathDocument
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")
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
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()
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ğundaBooks.xml
kök belgeden alt öğelere, bölümeComment
ve Bookstore düğümüne geçiyorsunuz.'Move to the first child node (comment field). nav.MoveToFirstChild()
Eşdüzey düzeyde düğümler
MoveToNext
arasında yineleme yapmak için yöntemini kullanın. yöntemi geçerliMoveToNext
düğümün bir sonraki eşdüzeyine taşınır.'Loop through all the root nodes. Do ... Loop While nav.MoveToNext
NodeType
Yalnızca öğe düğümlerini işlediğinizden emin olmak için özelliğini kullanın ve öğesininValue
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
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 gibiMoveToNextAttribute
diğ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
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önteminiConsole
kullanın.'Pause. Console.ReadLine()
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
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