方法: System.Xml.XPath クラスを使用して XPath クエリを実行

文書翻訳 文書翻訳
文書番号: 317069
すべて展開する | すべて折りたたむ

目次

概要

この資料内のクラスを使用する方法を示しています、 System.Xml.XPath XPath クエリを実行するのには.NET アプリケーションです。

System.Xml.XPath 名前空間を表示します。

は、 System.Xml.XPath XPath パーサーと評価エンジンの名前空間が含まれますがします。NET フレームワークです。は、 System.Xml.XPath 名前空間は、World Wide Web コンソーシアム (W3C) XML パス言語 (XPath) Version 1.0 の勧告をサポートしています。XPath の推奨事項の詳細については、次の W3C Web サイトを参照してください。
XML パス言語 (XPath) Version 1.0
は、 System.Xml.XPath 名前空間には、XPath クエリを実行し、生成された結果セットをプログラムで移動するのに最適な次のクラスも含まれています。
  • XPathDocument: パフォーマンスが高く、XML ドキュメントとストリームを処理するための読み取り専用キャッシュします。 XPathDocument 拡張スタイル シート言語変換 (XSLT) の処理と XPath データ モデル用に最適化されます。 XPathDocument ドキュメント オブジェクト モデル (DOM) を使用して、("のソース XML をメモリ内にツリー構造に"を読み込みます) 解析のモデルが挿入するを変更するには、または、拡張マークアップ言語 (XML) ドキュメントまたはストリーム内のノードを削除するために必要なインターフェイスを実装していません。
  • XPathNavigator: このクラスは、XPath データ モデルに基づいています。 XPathNavigator 読み込まれる XML データに対して XPath クエリを実行するのには、必要なメソッドを提供します。 XPathDocument. XPathNavigator 使用してインスタンス化される、 CreateNavigator メソッドは、 XPathDocument オブジェクトです。できます。 XPathNavigator 頻繁に実行される XPath クエリ式をコンパイルし、生成するのには System.Xml.XPath.XPathExpression コンパイル済みのクエリをカプセル化するオブジェクト。
  • XPathNodeIterator: 順方向専用、読み取り専用の反復子を提供します。使用すると、 選択 メソッドは、 XPathNavigator オブジェクトのインスタンスで、XPath クエリを実行するには XPathNodeIterator 作成されます。使用することができます。 XPathNodeIterator XPath クエリによって生成される結果セットを移動します。
  • XPathExpression: コンパイル済みの XPath クエリ式をカプセル化します。クエリ式を実行する前に、XPath クエリ式をコンパイルする必要があります。コンパイル済みの XPath 式に確認をするには、W3C XPath クエリ言語仕様に準拠する構文が含まれています。呼び出しは、 コンパイル メソッドは、 XPathNavigator オブジェクトの取得、 XPathExpression クラスです。通常、使用します。 XPathExpression プリコンパイル済みの XPath クエリ式の呼び出しで指定するのには、 選択 メソッドは、 XPathNavigator オブジェクトです。
  • XPathException:、。XPath クエリ式の処理中にエラーが発生するときに生成される NET Framework 例外です。は、 選択 メソッドおよび コンパイル メソッドは、 XPathNavigator クラスを発生させることができます。 XPathException.

サンプルの XML ドキュメントを作成します。

2 回目以降を使用する 2 つのサンプル XML ドキュメントを作成します。サンプル コードは NET は、次の手順を実行します。
  1. 使用のメモ帳またはのようなテキスト エディターで新しい XML ドキュメントを次のコードを貼り付けます Books.xml の名前。ドキュメントのルート フォルダー、ハード ディスクに保存します。
    <?xml version='1.0'?>
    <Books>
    <Book>
      <Title>Beginning XML</Title>
      <Publisher>Wrox</Publisher>
    </Book>
    <Book>
      <Title>XML Step by Step</Title>
      <Publisher>MSPress</Publisher>
    </Book>
    <Book>
      <Title>Professional XML</Title>
      <Publisher>Wrox</Publisher>
    </Book>
    <Book>
      <Title>Developing XML solutions</Title>
      <Publisher>MSPress</Publisher>
    </Book>
    </Books>
    					
  2. DotNetBooks.xml の名前は使用のメモ帳またはのようなテキスト エディターで新しい XML ドキュメントを次のコードを貼り付けます。ドキュメントのルート フォルダー、ハード ディスクに保存します。
    <?xml version='1.0'?>
    <DotNetBooks>
    <DotNetBook>
      <Title>Professional C#</Title>
      <Publisher>Wrox</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>ADO.Net Core Reference</Title>
      <Publisher>MSPress</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>Professional VB.Net</Title>
      <Publisher>Wrox</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>Inside C#</Title>
      <Publisher>MSPress</Publisher>
    </DotNetBook>
    </DotNetBooks>

Visual Basic を作成します。NET プロジェクト

  1. Visual Studio を起動します。NET し、後は、新しい Visual Basic を作成します。NET の Windows アプリケーション プロジェクトです。
  2. 2 つをドラッグします。 ボタン Form1.vb をツールボックスからのコントロール。
  3. 次のコードを貼り付けます、 Click_Event プロシージャの最初のコマンド ボタン:
    'Instantiate the XPathDocument class.
    Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")
    
    'Instantiate the XPathNavigator class.
    Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()
    
    'Instantiate the XPathIterator class.
    Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select("//Publisher[. = 'MSPress']/parent::node()/Title")
    
    'Use the XPathIterator class to navigate through the generated resultset
    'and then display the selected Titles.
    Do While iterator.MoveNext
        System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    					
  4. コードの機能を理解するのには、インライン コメントを参照してください。どのように、コードをインスタンス化し、クラス内の各オブジェクトのインスタンスを使用する特定の注意を払う、 System.Xml.XPath 名前空間です。文字列がへの呼び出しで、XPath クエリの式のパラメーターを指定することに注意してください、 選択 メソッドは、 XPathNavigator オブジェクトです。
  5. 次のコードを貼り付けます、 Click_Event プロシージャの 2 番目のコマンド ボタン:
    'Construct the XPathDocument by specifying the path to Books.xml.
    Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")
    
    'Create the XPathNavigator.
    Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()
    
    'Compile the XPath query expression to identify all MSPress Titles.
    'The Compile method of the XPathNavigator generates an XPathExpression object
    'that encapsulates the compiled query expression.
    
    Dim expr As System.Xml.XPath.XPathExpression = nav.Compile("//Publisher[. = 'MSPress']/parent::node()/Title")
    
    'Execute the Select method of the XPathNavigator to create the XPathNodeIterator.
    'Note that the sample code supplies the XPathExpression object as the query expression parameter.
    Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select(expr)
    
    System.Diagnostics.Debug.WriteLine("MSPress titles in books.xml...")
    System.Diagnostics.Debug.WriteLine("******************************")
    
    'Use the iterator to navigate the generated resultset.
    Do While iterator.MoveNext
        System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    
    
    'Release the XPathDocument and XPathNavigator.
    xmldoc = Nothing
    nav = Nothing
    
    System.Diagnostics.Debug.WriteLine(vbCrLf & "MSPress titles in DotNetBooks.xml...")
    System.Diagnostics.Debug.WriteLine("******************************")
    
    'Specify the path to DotNetBooks.xml to reconstruct the XPathDocument.
    xmldoc = New System.Xml.XPath.XPathDocument("c:\DotNetBooks.xml")
    
    'Create the XPathNavigator.
    nav = xmldoc.CreateNavigator()
    
    'Reuse the XPathExpression that you compiled previously to locate
    'all MSPress titles in DotNetBooks.xml.
    
    'You can reuse the XPathExpression because the hierarchy of elements that are referenced
    'in the XPath query is the same in Books.xml and DotNetBooks.xml. 
    'For example, the Publisher element is a child of the Title element in both XML documents.
    'The hierarchy must be identical for you to reuse the same XPathExpression object
    'across different XML documents/streams.
    
    'When you use an XPathExpression object, and the Select method executes,
    'the XPath query is not recompiled. 
    
    iterator = nav.Select(expr)
    
    'Use the iterator to navigate the generated resultset.
    Do While iterator.MoveNext
         System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    					
  6. コードの機能を理解するのには、インライン コメントを参照してください。サンプル コードをどのようにインスタンス化する特定の注意を払う、 XPathExpression オブジェクトが最初に (Books.xml) に対して、2 回目 (DotNetBooks.xml) に対して XPath クエリを実行すると、オブジェクトを再利用します。

プロジェクトをテストします。

  1. Visual Basic に変更を保存します。Net プロジェクトを作成し、プロジェクトを実行します。
  2. フォームが表示された場合は、文字列を使用して XPath クエリ式を指定するのには、コードを実行するのには、最初のコマンド ボタンをクリックします。指定された XPath クエリに対して Books.xml の出力が表示されます。
    XML Step by Step
    Developing XML solutions
    					
  3. 使用して、コードを実行するのには、2 番目のコマンド ボタンをクリックします。 XPathExpression XPath クエリ式を指定するには、[オブジェクト] をクリックします。指定した XPath クエリに対して books.xml を選択し、DotNetBooks.xml の出力は次のとおりです。
    MSPress titles in books.xml...
    ******************************
    XML Step by Step
    Developing XML solutions
    
    MSPress titles in DotNetBooks.xml...
    ******************************
    ADO.Net Core Reference
    Inside C#
    					

プロパティ

文書番号: 317069 - 最終更新日: 2011年7月25日 - リビジョン: 6.0
キーワード:?
kbhowtomaster kbmt KB317069 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:317069
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

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