XPathテスター
XPath 1.0の式をXMLやHTMLに対してテストし、一致するノード、属性、テキスト、数値や文字列の結果を、ブラウザのエンジンで即座に確認できます。
XPathテスターとは?
XPathテスターは、貼り付けたXMLまたはHTMLドキュメントに対してXPath式を評価し、結果を表示します。一致した要素はマークアップとテキストとともに、属性は値として、count() や sum() などの式では数値、文字列、真偽値で表示されます。結果は入力するたびに更新されます。
XPathテスターの使い方
//book[price > 35]/titleのようなXPath式を入力します。- ドキュメントをXMLとHTMLのどちらで解析するかを選びます。
- ドキュメントを貼り付けるか編集します。
- 一致数と各一致ノード、またはスカラーの結果を確認します。
例
//book[price > 35]/title on the sample bookstore XML
2 matches: Learning XML, XQuery Kick Start
sum(//book/price) は 119.94 を返します。
XPathテスターを使うべき場面
Webスクレイピング、Selenium/Playwrightのロケーター、XSLT、XML設定の処理に使うXPathの開発に使います。ブラウザが実装しているのはXPath 1.0だけなので、XPath 2.0/3.1の関数(matches()、string-join()など)は使えません。貼り付けたHTML内のスクリプトは実行されません。
XPathテスターの仕組み
ドキュメントはブラウザのDOMParser(application/xmlまたはtext/html)で解析され、XMLの構文エラーは報告されます。式は、ブラウザ標準のXPath 1.0エンジンである document.evaluate() でANY_TYPEの結果として評価されるため、ノードセット、数値、文字列、真偽値のすべてに対応します。名前空間のプレフィックスは、ルート要素の宣言から解決されます。表示されるのは最大200件の一致です。
一般的な使用例
- UIテスト用に、
//button[normalize-space()="Save"]のようなロケーターを作る。 -
//book/@categoryですべての属性値を抽出する。 - XMLフィードの値を数えたり合計したりする。
- スクレイパーのXPathが何も返さない理由をデバッグする。
よくある質問
デフォルト名前空間があるとXPathが何も返さないのはなぜですか。
XPath 1.0では、プレフィックスのない名前は、名前空間付きの要素に一致しません。ルート要素でプレフィックスを宣言して使うか、*[local-name()='book'] を使ってください。
HTMLとXMLのどちらで解析すべきですか。
Webページにはhtml(寛容な解析、小文字のタグ名)を、フィード、SOAP、サイトマップ、設定ファイルにはXMLを使います。
XPath 2.0には対応していますか。
いいえ。主要なブラウザはすべてXPath 1.0しか実装していません。