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

我试图弄清楚如何或是否有可能弄清楚表格内具有特定内容的 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 函数/查询?


凤凰求蛊
浏览 185回答 2
2回答

BIG阳

如果使用 xpath 1.0count(//table/tbody/tr[td/div/a/span/text()='Sally']/preceding-sibling::*)&nbsp;+&nbsp;1如果使用 xpath 2.0 试试这个index-of(//table[@id='t1']/tbody[@id='tb1']/tr/td/div/a/span,&nbsp;//table[@id='t1']/tbody[@id='tb1']/tr/td/div/a/span[text()='Sally'])

aluckdog

我不确定是否有可用的方法。但也许你可以通过这种方式解决它:<?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) {&nbsp; &nbsp; $nodes = $element->childNodes;&nbsp; &nbsp; foreach ($nodes as $node) {&nbsp; &nbsp; &nbsp; &nbsp; echo $i. " ".$node->nodeValue. "\n";&nbsp; &nbsp; &nbsp; &nbsp; $i++;&nbsp; &nbsp; }}?>
打开App,查看更多内容
随时随地看视频慕课网APP