この記事では、MSXML DOM をプログラミングするときに contains() XPath
関数を使用する方法について説明します。
元の製品バージョン: Microsoft XML
元の KB 番号: 304265
まとめ
コードで Microsoft XML (MSXML) ドキュメント オブジェクト モデル (DOM) を使用して XML ドキュメントを読み込んで解析する場合、データに指定された文字列値または単語が含まれる属性を持つ要素や要素を識別するのが一般的なプログラミング手法です。 この記事では、contains XML Path Language (XPath) 文字列関数を使用してこの要件を実装する方法を示すコード サンプルについて説明します。
ステップ バイ ステップの例
メモ帳で、 Books.xmlという名前の新しい XML ドキュメントを作成し、次の XML を貼り付けます。
<?xml version="1.0"?> <!-- This file represents a fragment of a bookstore inventory database --> <bookstore specialty="novel"> <book> <Title>Beginning XML</Title> <Publisher>Wrox</Publisher> </book> <book> <Title>Professional XML</Title> <Publisher>Wrox</Publisher> </book> <book> <Title>Programming ADO</Title> <author> <first-name>Mary</first-name> <last-name>Bob</last-name> </author> <datePublished>1/1/2000</datePublished> <Publisher>Microsoft Press</Publisher> </book> </bookstore>
Books.xmlをドライブ C のルート フォルダーに保存します。
Microsoft Visual Basic で新しい Standard EXE プロジェクトを開きます。 Form1 は既定で作成されます。
[プロジェクト] メニューの [ 参照] をクリックし、[ Microsoft XML 3.0 ] チェック ボックスをオンにします。
コマンド ボタンをドラッグし、 Form1 にドロップします。
コマンド ボタンの Click イベント プロシージャに次のコードをコピーして貼り付けます。
Dim doc As MSXML2.DOMDocument Dim nlist As MSXML2.IXMLDOMNodeList Dim node As MSXML2.IXMLDOMNode Set doc = New MSXML2.DOMDocument doc.setProperty "SelectionLanguage", "XPath" doc.Load "c:\books.xml" Set nlist = doc.selectNodes("//book/Title[contains(.,'ADO')]") MsgBox "Matching Nodes : " & nlist.length For Each node In nlist Debug.Print node.nodeName & " : " & node.Text Next
上記のコードは、
BOOKS.XML から MSXML DOMDocument オブジェクトのインスタンスに XML を読み込みます。 次に、 contains XPath
関数を使用して、ADO という単語を含むすべての書籍タイトルを識別する XPath クエリを実行します。 最後に、For ループは、選択したノードを反復処理し、XPath クエリを実行して識別された一致するタイトルを表示します。contains XPath
関数の最初のパラメーターは、比較を実行するソース ノードまたは文字列を指定するために使用されます。 2 番目のパラメーターは、ソース ノードで検索する単語または文字列値を指定する文字列です。 contains 関数の 2 番目のパラメーターとして指定される文字列または単語では、大文字と小文字が区別されることを覚えておく必要があります。