为了账号安全,请及时绑定邮箱和手机立即绑定

Xpath,在html代码中查找节点的位置

Xpath,在html代码中查找节点的位置

PHP
凤凰求蛊 2022-01-14 17:09:19
我试图弄清楚如何或是否有可能弄清楚表格内具有特定内容的 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'])



查看完整回答
反对 回复 2022-01-14
?
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++;

    }

}


?>


查看完整回答
反对 回复 2022-01-14
  • 2 回答
  • 0 关注
  • 184 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信