我试图弄清楚如何或是否有可能弄清楚表格内具有特定内容的 html 元素的位置。所以这是我的 html 表,我尝试获取“Sally”的位置,在这种情况下显然是位置 3。我尝试了很多 xpath 查询,但没有将位置输出为像“3”这样的数字。“莎莉”的位置当然可以改变。<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 函数/查询?
2 回答
BIG阳
TA贡献1859条经验 获得超6个赞
如果使用 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'])
aluckdog
TA贡献1847条经验 获得超7个赞
我不确定是否有可用的方法。但也许你可以通过这种方式解决它:
<?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++;
}
}
?>
- 2 回答
- 0 关注
- 207 浏览
添加回答
举报
0/150
提交
取消