gpt4 book ai didi

PHP Xpath 跟随 sibling

转载 作者:行者123 更新时间:2023-12-03 04:43:11 27 4
gpt4 key购买 nike

我正在尝试使用 xpath 来获取表的内容。

表格看起来像这样

<div>
<table>
<tr class="tableheader">
<td> Stuff </td>
</tr>
<tr class="indent1">
<td> Contents </td>
</tr>
<tr class="indent1">
<td> Contents </td>
</tr>
<tr class="tableheader">
<td> Stuff </td>
</tr>
<tr class="indent1">
<td> Contents </td>
</tr>
<tr class="indent1">
<td> Contents </td>
</tr>
</table>
</div>

我正在尝试提取表标题之间所有 tr[@class='indent1'] 的值

这是我到目前为止所拥有的:

$elements = $xPath->query("div/table/tbody/tr[@class='tableheader']");

for ($i = 0; $i < $elements->length; $i++){
print "Node: ".$elements->item($i)->nodeValue."\n";
$siblings = $xPath->query("following-sibling::tr[@class='indent1']", $elements->item($i));
foreach ($siblings as $sibling) {
print "\tSibling: ".$sibling->nodeValue."\n";
}

}

预期输出是

Node: Stuff
Sibling: Contents
Sibling: Contents
Node: Stuff
Sibling: Contents
Sibling: Content

s

相反,它为每个打印所有 tr class="indent1s"。

谢谢。

最佳答案

编辑:

好吧,也许这对你有帮助。只需获取每个同级并使用 PHP 检查属性即可:

foreach ($siblings as $sibling) {
if (!is_null($sibling->attributes)
&& $sibling->attributes->getNamedItem('class')->nodeValue == 'indent1') {
break;
}
print "\tSibling: ".$sibling->nodeValue."\n";
}
<小时/>

您的总体目标是什么?如果您只想打印出节点,请使用 SAX 处理结构会更合适、更容易(SAX 与 PHP)。

或者也许XSLT但我无法帮助你。

关于PHP Xpath 跟随 sibling ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2124474/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com