我正在尝试弄清如何或是否有可能找出表中具有特定内容的html元素在什么位置。
所以这是我的html表,我尝试获取“ Sally”的位置,在这种情况下,它显然是位置3。我尝试了很多xpath查询,但是没有任何位置输出像“ 3”这样的数字。 “ Sally”的位置当然可以更改。
<table class"table" id="t1">
<tbody id="tb1">
<tr>
<td>
<div class="sh-osd">
<a class="osd-link" href="#"><span>Peter</span></a>
</div>
</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>
<div class="sh-osd">
<a class="osd-link" href="#"><span>Jeff</span></a>
</div>
</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>
<div class="sh-osd">
<a class="osd-link" href="#"><span>Sally</span></a>
</div>
</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>
<div class="sh-osd">
<a class="osd-link" href="#"><span>John</span></a>
</div>
</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
</tbody>
</table>
那么也许有一个xpath函数/查询可以做到这一点?
答案 0 :(得分:1)
如果使用xpath 1.0
count(//table/tbody/tr[td/div/a/span/text()='Sally']/preceding-sibling::*) + 1
如果使用xpath 2.0,请尝试
index-of(//table[@id='t1']/tbody[@id='tb1']/tr/td/div/a/span, //table[@id='t1']/tbody[@id='tb1']/tr/td/div/a/span[text()='Sally'])
答案 1 :(得分:0)
我不确定是否有可用的方法。但也许您可以通过以下方式解决它:
<?php
$file = "xpath.html";
$doc = new DOMDocument();
$doc->loadHTMLFile($file);
$xpath = new DOMXpath($doc);
$elements = $xpath->query("//a[@class='osd-link']");
$i = 0;
foreach ($elements as $element) {
$nodes = $element->childNodes;
foreach ($nodes as $node) {
echo $i. " ".$node->nodeValue. "\n";
$i++;
}
}
?>