1

次の HTML コードの例を考えます。

<table>
   <tr>
      <td>
         <div>Value 1</div>
      </td>
      <td>
         <div>Value A</div>
      </td>
   </tr>
   <tr>
      <td>
         <div>Value 1</div>
      </td>
      <td>
        <div>Value B</div>
      </td>
   </tr>
   <tr>
      <td>
         <div>Value A</div>
      </td>
      <td>
         <div>Value 1</div>
      </td>
   </tr>
</table>

1列目のdivに「Value 1」、2列目のdivに「Value 2」を持つ(tr)要素を選択するxpath式を書くことはできますか? この例では、最初の行のみが必要です。

「値 1」の子孫を持つすべての行を取得すると、3 行すべてが取得されます。

「値 1」と「値 A」を持つ子孫を持つすべての行を取得すると、行 1 と 3 が取得されます。

重要なのは値だけではなく、順序でもあります。また、私の実際のケースでは、いくつかの列があり、チェックする必要がある列が並んでいない可能性があります。(たとえば、列 4 7 および 9 を確認する必要がある可能性があります)

私はこのようなものを探していると思いますが、うまくいきません(奇妙なフォーマットは読みやすさのためですが、それでも有効だと思います):

//table//tr
[
(.//div[position()=1 and text()='Value 1']) 
and 
(.//div[position()=2 and text()='Value A'])
]

position() の代わりに [1] と [2] も試しましたが、役に立ちませんでした。何か案は?ありがとう

4

2 に答える 2

0

あなたの表現は私にとってはうまくいきますが、私は次のように書きます:

//table/tr[td[1]/div = 'Value 1' and td[2]/div = 'Value A']
于 2013-11-07T00:26:03.897 に答える
0

単純

//tr[normalize-space(td[1]/div) = 'Value 1' and normalize-space(td[2]/div) = 'Value A']

デモ - http://www.xpathtester.com/obj/e3d5b9bf-79d5-4e81-a336-daba38d430fe

于 2013-11-07T00:26:21.587 に答える