gpt4 book ai didi

php - XPath 查询有时不显示正确的元素

转载 作者:搜寻专家 更新时间:2023-10-31 22:12:21 26 4
gpt4 key购买 nike

我正在使用 XPath,这是我的查询:

$elements = $xpath->query('//div/div/div/div/div/div[@id="con1"]/table/tr/td');

一切正常。

然后我在div中改变条件,查询是这样的:

$elements = $xpath->query('//div/div/div/div/div/div[@id="con2"]/table/tr/td');

我确实看到了我必须看到的东西。

但稍后,如果我这样做:

$elements = $xpath->query('//div/div/div/div/div/div[@id="con1" or @id="con2"]/table/tr/td');

我再次看到 con1 的元素。这是为什么?

完整代码如下:

$elements = $xpath->query('//div/div/div/div/div/div[@id="con1" or @id="con2"]/table/tr/td');
foreach ( $elements as $element ) {
$str1=$element->getAttribute('class');
$str2="first-td";
$str3="status";
if (strcmp($str1,$str2)==0) {
var_dump( $element->nodeValue);
}
if (strcmp($str1,$str3)==0) {
echo $element->childNodes->item(0)->getAttribute('class'). "<br />";
}
}

总结一下:如果我的条件只有con1,我会看到正确的结果。如果只有 con2,我会看到正确的结果。当我使用 时,问题就来了。在这种情况下,我只能看到 con1 的结果。这就像它在满足第一个条件后停止。它们在 DOM 树的同一层级。

最佳答案

您要做的是检索 <div id="con1"><div id="con2">在同一个表达式中,但您实际做的是检索一个 div,它具有 id="con1"id="con2"。条件的第一个表达式返回 true 然后你得到 <div id="con1">节点。这是有道理的。

要获得两个节点,您需要类似的东西:

//div[@id="con1"]|//div[@id="con2"

备注://div[@id="con1"]找到任何节点 <div id="con1">在树和id在文档中必须是唯一的。没有必要指定所有的路径。

关于php - XPath 查询有时不显示正确的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11494106/

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