我正在使用 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 />";
}
}
总结一下:如果我的条件是 only con1
,我会看到正确的结果。如果只是con2
,我会看到正确的结果。当我使用or
. 在这种情况下,我只看到来自con1
. 就像它在满足第一个条件后停止。它们与 DOM 树处于同一级别。