Visual Basic を使用して XPathNavigator クラスを使用して XML を移動する
この記事では、Visual Basic 2005 または Visual Basic .NET の クラスを XPathNavigator
使用して XML を移動するためのサンプル 手順とサンプル コードについて説明します。
元の製品バージョン: Visual Basic 2005、Visual Basic .NET
元の KB 番号: 301111
概要
この詳細な記事では、オブジェクトから作成されたオブジェクトを使用 XPathNavigator
して拡張マークアップ言語 (XML) ドキュメントを移動する方法について XPathDocument
説明します。 このサンプルでは、XML データを含むオブジェクトを XPathDocument
読み込み、オブジェクトを XPathNavigator
ビューとしてデータに作成し、ドキュメント内を歩いて XML を表示します。
この記事の Microsoft Visual C# バージョンについては、「 Visual C# を使用して XPathNavigator クラスを使用して XML ドキュメントを移動する」を参照してください。
要件
次の一覧では、必要な推奨ハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、およびサービス パックの概要を示します。
- Windows Server 2003、Windows 2000 Professional、Windows 2000 Server、Windows 2000 Advanced Server、または Windows NT 4.0 Server
- Visual Studio 2005 または Visual Studio .NET
この記事では、次のトピックについて理解していることを前提としています。
- XML 用語
- XML ファイルの作成と読み取り
- XML パス言語 (XPath) 構文
XPathNavigator クラスを使用して XML を移動する
Visual Studio 2005 または Visual Studio。 NET では、Visual Basic 2005 または Visual Basic .NET コンソール アプリケーションを作成します。
注:
この例では、 という名前のファイル Books.xml使用します。 独自の Books.xml ファイルを作成することも、.NET Software Development Kit (SDK) クイック スタートに含まれているサンプルを使用することもできます。 クイック スタートがインストールされている場合、Books.xml はフォルダーにあります。
\Program Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB
または、サンプル XML ファイル (books.xml) にアクセスして、このファイルを取得することもできます。
Books.xml を、このプロジェクトを
\Bin\Debug
作成したフォルダーの下にあるフォルダーにコピーする必要があります。プロジェクトが名前空間を
System.Xml
参照していることを確認します。コードの
Imports
後半でXml
これらの名前空間の宣言を修飾する必要がないように、 およびXPath
名前空間の ステートメントを使用します。 他の宣言の前に ステートメントImports
を使用する必要があります。Imports System.Xml Imports System.Xml.XPath
適切な変数を宣言します。 XML ドキュメントを
XPathDocument
保持するオブジェクトと、XPath 式をXPathNavigator
評価してドキュメント内を移動するオブジェクトを宣言します。 XPath 式を保持する String オブジェクトを宣言します。 Module1 の Main プロシージャに宣言コードを追加します。Dim nav As XPathNavigator Dim docNav As XPathDocument
サンプル ファイル
Books.xml
をXPathDocument
使用してオブジェクトを読み込みます。 クラスではXPathDocument
、拡張スタイルシート言語変換 (XSLT) を使用して、XML ドキュメント処理用の高速でパフォーマンス指向のキャッシュを提供します。 これは XML ドキュメント オブジェクト モデル (DOM) に似ていますが、XSLT 処理と XPath データ モデル用に高度に最適化されています。'Open the XML. docNav = New XPathDocument("books.xml")
ドキュメントからオブジェクトを
XPathNavigator
作成します。XPathNavigator
を使用すると、XML ドキュメント内の属性ノードと名前空間ノードの両方を移動できます。'Create a navigator to query with XPath. nav = docNav.CreateNavigator
メソッドを使用してドキュメントのルートに
MoveToRoot
移動します。MoveToRoot
は、ノードのツリー全体を含むドキュメント ノードにナビゲーターを設定します。'Initial XPathNavigator to start at the root. nav.MoveToRoot()
メソッドを
MoveToFirstChild
使用して、XML ドキュメントの子に移動します。 メソッドはMoveToFirstChild
、現在のノードの最初の子に移動します。 ソースのBooks.xml
場合は、ルート ドキュメントから子、セクション、Comment
および書ストア ノードに移動します。'Move to the first child node (comment field). nav.MoveToFirstChild()
メソッドを
MoveToNext
使用して、兄弟レベルでノードを反復処理します。 メソッドはMoveToNext
、現在のノードの次の兄弟に移動します。'Loop through all the root nodes. Do ... Loop While nav.MoveToNext
プロパティを
NodeType
使用して、要素ノードのみを処理していることを確認し、 プロパティをValue
使用して要素のテキスト表現を表示します。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
ノードに
HasAttributes
属性があるかどうかを判断するには、 プロパティを使用します。 など、他のメソッドを使用して属性に移動し、MoveToNextAttribute
その値を調べることもできます。注:
このコード セグメントでは、ツリー全体ではなく、ルート ノードの子孫についてのみ説明します。
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
メソッドをConsole
使用して、コンソールディスプレイの最後に一時停止を追加して、上記の結果をより簡単に表示します。'Pause. Console.ReadLine()
コンソール アプリケーション プロジェクトをビルドして実行します。
完全なコード一覧
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
関連情報
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示