1. ホーム
  2. html

[解決済み] XPath:: 次の兄弟を取得

2022-03-08 21:02:22

質問

以下のようなHTML構造になっています。私は、DOM内にこれらのタグが多数存在するため、2番目のカラーダイジェスト要素を抽出するための堅牢な方法を構築しようとしています。

<table>
  <tbody>
    <tr bgcolor="#AAAAAA">
    <tr>
    <tr>
    <tr>
    <tr>
      <td>Color Digest </td>
      <td>AgArAQICGQMVBBwTIRQHIwg0GUMURAZTBWQJcwV0AoEDAQ </td>
    </tr>
    <tr>
      <td>Color Digest </td>
      <td>2,43,2,25,21,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, </td>
    </tr>
  </tbody>
</table>

デコードされた値を持つ2番目の "Color Digest" td 要素を取り出そうとしています。

以下のxpathを書きましたが、2番目のtd要素を取得するのではなく、2番目のtd要素を取得することができません。

//td[text() = ' Color Digest ']/following-sibling::td[2]

そして、td[2]をtd[1]に変更すると、両方の要素が表示されます。

どうすればいいですか?

カラーダイジェスト' に等しい td を持つ 2 番目の tr を探す必要があります。次に、tr 内の最初の td の次の兄弟、または 2 番目の td を探す必要があります。

以下を試してみてください。

//tr[td='Color Digest'][2]/td/following-sibling::td[1]

または

//tr[td='Color Digest'][2]/td[2]

http://www.xpathtester.com/saved/76bb0bca-1896-43b7-8312-54f924a98a89