2013-03-28 13 views
5

xpathを使用してclass="watchListItem",span="icon icon_checked"、およびh3="a test"のリンクを選択したいと思います。私はxpathを使用して、リンクとスパン、またはリンクとh3のいずれかを取得できますが、リンク、スパン、およびh3は取得できません。Xpath - 2つの子ノードを照合して親クラスを取得

ここで私が試したものです:

//*[@class = 'watchListItem']//*[span[@class = 'icon icon_checked'] and h3[text()='AA']]

<li> 
<a class="watchListItem" data-id="thisid1" href="javascript:void(0);"> 
<span class="icon icon_checked"/> 
<h3 class="itemList_heading">a test</h3> 
</a> 
</li> 

<li> 
<a class="watchListItem" data-id="thisid2" href="javascript:void(0);"> 
<span class="icon icon_unchecked"/> 
<h3 class="itemList_heading">another test</h3> 
</a> 
</li> 

<li> 
<a class="watchListItem" data-id="thisid3" href="javascript:void(0);"> 
<span class="icon icon_checked"/> 
<h3 class="itemList_heading">yet another test</h3> 
</a> 
</li> 

答えて

5

あなたがそうのようなchild::場所のパスを使用することができます:

私はこのような何かのために

//*[@class = 'watchListItem']/span[@class = 'icon icon_checked'] 

//*[@class= 'watchListItem']/h3[text()='AA'] 

探しています

//a[@class="watchListItem" 
    and child::span[@class="icon icon_checked"] 
    and child::h3[text()="another test"]] 

アンカーをdata-id="thisid3"で選択します。

+0

私は同様の答えを思いついたが、私は 'child :: span'の代わりに' .// span'を使いました。違いがあれば分かりますか? ':: child'は直接の子要素のみを選択するのか、それとも子孫を選択するのでしょうか?その場合は重要ではありません。ちょっと興味があるんだけど。 – Ben

+0

::子孫はそれを行います:: ::子供は直接の子のみを選択すべきです:) @Ben –

+1

@Ben though .//子どもだけでなく子孫も選択します。 –

関連する問題