使用XPath提取td值

时间:2018-02-27 19:49:09

标签: html xml parsing xpath

我需要使用XPath提取HTML单元格表中的值,并且我不想使用“位置”XPath字符串。

我的代码示例就是这样的

<body>
 <table>
  <tr>...</tr>
  <tr>...</tr>
  <tr>...</tr>
  <tr>
   <td>
    <table id="GridView5">
     <tr>...</tr>
     <tr>...</tr>
     <tr>
      <td>First Title</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
     <tr>
    </table>
   </td>
  </tr>
 </table>
</body>

我正在尝试使用类似这样的XPath表达式

//*[@id=”GridView5”]/*[td=”First Title”]/td[3]

从上面的代码

中提取值“ 2

连连呢?实例

1 个答案:

答案 0 :(得分:2)

这个XPath,

//table[@id="GridView5"]/tr[td="First Title"]/td[3]

将选择td的第tr个孩子,其中td子项的字符串值为First Titletableid GridView5 1}} td的属性值。

它为请求的td元素使用单个位置选择器,因为您的标记不提供区分包含2的{​​{1}}的其他方法,除非您允许假设2之后1或3之前(处理标签)。如果前面或后面的td元素可以用作标签,那么您可以使用前面或后面的兄弟轴而不是[3]

//table[@id="GridView5"]/tr[td="First Title"]/td[.='1']/following-sibling::td[1]

但即使在这里,您也需要[1]才能在兄弟之后立即选择