CSSで取り出したり、XPathをフルパスで取り出すと面倒なので。
マッチ文字でデータを取り出して使いたい
doc.xpath("//*[contains(./text(),'Ruby')]")
Xpathはソレだけでクエリ言語として成立しているので、これを覚えるのが一番手っ取り早い。
こまったら 次を使う
//タグ[contains( ./text() , "文字列" )]
または属性で絞って
//タグ[contains( ./@attr , "文字列" )]
//*[contains( ./@attr , "文字列" )]
あまりにざっくり書くと、親子ノードを連れてきちゃうので、タグや属性・text()は入れた方がいい
//*は全ノードを示す
よくある勘違い:contains(./text(),'検索文字')とcontains(.,'検索文字')は同じだよね?
いいえ、違います
- "./text()" とした場合は、 自分のノードのテキスト表現
- "." とした場合 は、子孫ノードを含めた、テキスト表現
ぜんぜん違うんだお
ret = document.evaluate("//*[contains(text(),'検索文字')]",document)