2016-10-06 22 views
0

XPath //img[contains(@class, 'check')]/ancestor::tr//span[contains(@class, 'date-display-single')]が問題ですが、各行にそのクラスの2つの<span>があります。その結果XPath:特定の属性を持つ最初の要素を選択してください

:私が欲しいもの

[nodeValue] => Friday 7 October 2016 
[nodeValue] => Fri 7 Oct 2016 
[nodeValue] => Friday 21 October 2016 
[nodeValue] => Fri 21 Oct 2016 
[nodeValue] => Friday 4 November 2016 
[nodeValue] => Fri 4 Nov 2016 

は最初<span>です:

[nodeValue] => Friday 7 October 2016 
[nodeValue] => Friday 21 October 2016 
[nodeValue] => Friday 4 November 2016 

私はこれをどのように行うことができますか?

編集:HTMLは

<table class="views-table cols-6"> 
    <thead> 
     <tr> 
      <th class="a" scope="col"></th> 
      <th class="a" scope="col"></th> 
      <th class="a" scope="col">1</th> 
      <th class="a" scope="col">2</th> 
      <th class="a" scope="col">3</th> 
      <th class="a" scope="col">4</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr class="odd views-row-first"> 
      <td class="a"><span class="date-display-single">Friday 7 
      October 2016</span></td> 
      <td class="a"><span class="date-display-single">Fri 7 Oct 
      2016</span></td> 
      <td class="a"><img alt="Yes" class="check" src="image.png" 
      title="Yes"></td> 
      <td class="a"></td> 
      <td class="a"></td> 
      <td class="a"></td> 
     </tr> 
     <tr class="even"> 
      <td class="a"><span class="date-display-single">Friday 14 
      October 2016</span></td> 
      <td class="a"><span class="date-display-single">Fri 14 Oct 
      2016</span></td> 
      <td class="a"></td> 
      <td class="a"><img alt="Yes" class="check" src="image.png" 
      title="Yes"></td> 
      <td class="a"><img alt="Yes" class="check" src="image.png" 
      title="Yes"></td> 
      <td class="a"><img alt="Yes" class="check" src="image.png" 
      title="Yes"></td> 
     </tr> 
    </tbody> 
</table> 
それはあなたのポストのように見える

は、ほとんどのコードです。詳細を追加してください。あなたは、インデックス、例えば使用することができます

+0

XPathに問題があるHTMLの縮小サンプルを投稿してください。ありがとう。 – kjhughes

+0

Added.123456789 –

答えて

0

:あなたのオリジナルのXPathに基づいて、このXPathの

(your XPath here)[1] 
+0

'(// img [contains(@class、 'check')]/ancestor :: tr // span [contains(@class、 'date-display-single')]))[1]' 私に: '[nodeValue] => 2016年10月7日金曜日'私は欲しいものではない –

+0

@FlutterShyこれを試してみてください: '// img [contains(@class、 'check')]/ancestor :: tr [1] ' –

+0

は' [1] 'なしとまったく同じです –

1

を、

//img[contains(@class, 'check')]/ancestor::tr/td[1]/span[contains(@class, 'date-display-single')] 

は、内の最初のtdであるだけ述べspan要素を選択しますそれぞれ述べたtr

<span class="date-display-single">Friday 7 
      October 2016</span> 
<span class="date-display-single">Friday 14 
      October 2016</span> 

が必要です。

ただし、この短いXPathはまた、同じ要素を選択します:

//tr[.//img[@class='check']]/td[1]/span[@class='date-display-single'] 

これは、限り、あなたは@class属性用の単一の値をとることができるようで結構です。あなたができない場合は、あなたのソリューションは、その標準溶液目標クラス値の前後にスペースを連結関係深刻なサブ問題ました:

[contains(concat(' ',@class,' '), ' check ')] 

この技術は両方checkdate-display-singleテストのための上記のXPathにも適用することができます。

+0

私は' td [n] 'を使うことができます。レイアウトが少し変わった場合でもそれは簡単に機能しなくなる可能性があります。 –

+1

次に、望ましくないものから欲しいものを曖昧にする非位位の基準を教えてください。そのためにXPathを示します。 – kjhughes

関連する問題