如何选择父项 <tr>
元素包含 ccc
和ddd
其中,没有其他?
即来自下面的 XML:
<table>
<tr>
<td>aaa</td>
<td>bbb</td>
<td>select</td>
</tr>
<tr>
<td>ddd</td>
<td>ccc</td>
<td>select</td>
</tr>
<tr>
<td>ccc</td>
<td>ddd</td>
<td>select</td>
</tr>
<tr>
<td>aaa</td>
<td>ccc</td>
<td>select</td>
</tr>
</table>
选择此行:
<tr>
<td>ccc</td>
<td>ddd</td>
<td>select</td>
</tr>
或者,如何选择第三个 td
(其中写有 select)在 td
的同一行与ccc
& ddd
?
最佳答案
XPath 表达式包含多个定位步骤。每个步骤都会为谓词(在 [...]
内)或后续步骤创建上下文。 最后步骤包含有效选择的结果集。您可以在任何步骤中应用一个或多个谓词,以减少集合。
此表达式选择 tr
包含 td
的元素字符串值为 aaa
的元素和一个 td
字符串值为 bbb
的元素.
//tr[td='aaa' and td='bbb']
此表达式将选择一个包含两个 td
的集合第二个和第三个 <td>select</td>
中的节点 ( <tr>
) s(具有 td='ccc' and td='ddd'
的那些:
//tr[td='ccc' and td='ddd']/td[3]
除了使用and之外,您还可以堆叠谓词。每个谓词都会减少结果集,从而创建一个供后续谓词运行的上下文。这与上面的表达式具有相同的效果:
//tr[td='ccc'][td='ddd']/td[3]
关于html - 基于多个子级的 XPath 父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24353063/