コンテンツへスキップ
uencoder

XML ドキュメントを問い合わせるために XPath を使う

XPath は、パス式、述語、関数で XML ツリーを走査します。絶対パスと相対パス、ワイルドカード、よく使う関数を学びましょう。

  1. 1

    XPath 式は XML ツリーからノードを選択します:/root/child はすべての子要素を選択し、//element はどこにある要素でも選択し、[@attr="value"] は属性で絞り込み、text() はテキスト内容を抽出し、* はワイルドカードです。XPath 1.0 はどこでもサポートされ、XPath 2.0 以降は型付けとより多くの関数を追加します。

  2. 2
    JSONPath クエリツール →

    JSONPath (XPath の JSON 版) を使って、XML から変換した JSON にクエリを実行します。まず XML を JSON に変換し、$.root.child[?(@.attr=="value")] のような JSONPath 式を使います。XPath を直接使う代わりの 2 ステップの方法です。

  3. 3
    XML フォーマッター →

    XPath 式を書く前に、XML を整形して構造を把握します。インデントにより階層が見え、正しいパスを構築しやすくなります。XPath がどのノードを選択するかを確認して、検証してください。

  4. 4

    よく使う XPath パターン:/bookstore/book[1] (最初の本)、/bookstore/book[price>35] (子要素の値で絞り込み)、//title (どこにある title もすべて)、count(//book) (本を数える)、//book/@category (属性値)。絞り込みには述語 [...] を、text()、contains()、starts-with() などの関数を使ってください。

よくある質問

XPath と CSS セレクターの違いは?
CSS セレクターは HTML/XML の要素に作用します (シンプルですが限定的)。XPath のほうが強力です。テキスト内容による選択、関数の使用、親/祖先への移動、名前空間の処理ができます。単純な HTML クエリには CSS セレクターを、複雑な XML や CSS では不十分な場合には XPath を使ってください。
XPath 1.0、2.0、3.0 の違いは?
XPath 1.0 はどこでもサポートされています (ブラウザー、libxml)。XPath 2.0 はシーケンス、より豊かな型システム、より多くの関数を追加します。Saxon がサポートしています。XPath 3.0 は動的評価を追加します。Web/ブラウザー用途では 1.0 を使ってください。Saxon によるサーバー側の XML 処理では 2.0 以降を使います。

このタスクを解決するワークフロー

関連ツール