それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

XPathで目的の要素を持つ親ノードから辿ることをする。

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 を使うには最強ツールだと思うよほんと。