Xpath が便利なのがこれ
HTMLやテーブルで <a>
を狙って取り出したいときに、複数取り出しちゃう。nth-child を使えば良いんだろうけど、Xpathの方がもうすこし柔軟に書けるので便利なんですよね。
<ul> <li><a></a> <li><a></a> <li><span><a></a></span> <li> <ul>
これだと、2個めの a を狙うのは //li[2]/a
になるんだけど。この書き方ではHTMLの構造でゴミが混じって意図したとおりにノードが取れないことが有る。
とくにいまどきテーブルレイアウトを使っていたり、意識他界系のマークアップで li と div が大量にあったりするともう大変。
○○を子ノードに持つXpathを条件する
子ノードを条件に持つXpath を使いつつ、インデックス指定をするときれいに取れてくる。
//li[ ./a ][2]/a #=> a
もし、うっかり インデックス指定を無精すると、配列になる。
//li[ ./a ]/a #=> [a ,a]
もし、うっかり条件を甘くすると、もっと取れてしまって困る.
//li//a #=> [a ,a, a]
Xpathは便利だけど奥が深いね。 まぁ contains を使うには最強ツールだと思うよほんと。