使用 XPath,我如何 select 只有在链接兄弟元素下存在特定子元素的链接
Using XPath, how do I select only the links that have a particular child present under the links sibling element
如何使用以下标准仅 select 中间安装名称?
在 table 中,我有多个 table 行。在这些 table 行的内部是一个 link(在
内部),其中包含 URL 和特定安装的名称,可以很容易地 select 编辑:
//td[contains(@class, 'install-name')]/a/text()
我不想 select 所有安装名称,我只想 select 锁定的安装。只有锁定安装包含位于 links 兄弟元素内的此元素。
//div[@class="install-details"]/span/i[contains(@class, 'password-protected')]
这里是 HTML:
<tr class="install odd" role="row">
<td class="install-name sorting_1" data-sort="demo"><a href="/installs/demo">demo</a>
<div class="install-details">
<span>
</span>
<span class="php-version">
</span>
</div>
</td>
</tr>
<tr class="install even" role="row">
<td class="install-name sorting_1" data-sort="adam">
<a href="/installs/adam">adam</a>
<div class="install-details">
<span>
<i class="install-status-icon password-protected fa fa-lock" title="Password Protected"></i>
</span>
<span class="php-version">
</span>
</div>
</td>
</tr>
<tr class="install odd" role="row">
<td class="install-name sorting_1" data-sort="amy">
<a href="/installs/amy">amy</a>
<div class="install-details">
<span>
</span>
<span class="php-version">
</span>
</div>
</td>
</tr>
如何使用上述标准仅 select 中间安装名称?
编辑:这是一个可以玩的 CodePen https://codepen.io/anon/pen/QvEbba
您可以将第二个 XPath 用作第一个 XPath 的附加谓词([]
中的表达式),如下所示:
//td[contains(@class, 'install-name')]
[div[@class="install-details"]/span/i[contains(@class, 'password-protected')]]
/a/text()
注意第二个谓词,它将结果限制为那些包含 'password-protected' 信息的 td
。
如何向后遍历 HTML。
//i[contains(@class, 'password-protected')]/parent::span/parent::div[@class='install-details']/preceding-sibling::a/text()
如何使用以下标准仅 select 中间安装名称?
在 table 中,我有多个 table 行。在这些 table 行的内部是一个 link(在
//td[contains(@class, 'install-name')]/a/text()
我不想 select 所有安装名称,我只想 select 锁定的安装。只有锁定安装包含位于 links 兄弟元素内的此元素。
//div[@class="install-details"]/span/i[contains(@class, 'password-protected')]
这里是 HTML:
<tr class="install odd" role="row">
<td class="install-name sorting_1" data-sort="demo"><a href="/installs/demo">demo</a>
<div class="install-details">
<span>
</span>
<span class="php-version">
</span>
</div>
</td>
</tr>
<tr class="install even" role="row">
<td class="install-name sorting_1" data-sort="adam">
<a href="/installs/adam">adam</a>
<div class="install-details">
<span>
<i class="install-status-icon password-protected fa fa-lock" title="Password Protected"></i>
</span>
<span class="php-version">
</span>
</div>
</td>
</tr>
<tr class="install odd" role="row">
<td class="install-name sorting_1" data-sort="amy">
<a href="/installs/amy">amy</a>
<div class="install-details">
<span>
</span>
<span class="php-version">
</span>
</div>
</td>
</tr>
如何使用上述标准仅 select 中间安装名称?
编辑:这是一个可以玩的 CodePen https://codepen.io/anon/pen/QvEbba
您可以将第二个 XPath 用作第一个 XPath 的附加谓词([]
中的表达式),如下所示:
//td[contains(@class, 'install-name')]
[div[@class="install-details"]/span/i[contains(@class, 'password-protected')]]
/a/text()
注意第二个谓词,它将结果限制为那些包含 'password-protected' 信息的 td
。
如何向后遍历 HTML。
//i[contains(@class, 'password-protected')]/parent::span/parent::div[@class='install-details']/preceding-sibling::a/text()