3
我使用XPath正確的元素,這是我的查詢: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
,我會看到正確的結果。當我使用or
時出現問題。在這種情況下,我只看到con1
的結果。就好像它在滿足第一個條件後停止。它們與DOM樹的同一級別。
無論如何,當你擁有通配符啓動器時,是否真的有必要擁有所有'div's? – freefaller 2012-07-15 17:37:54
是的,如果你看到我是否只活一個條件,我會得到結果。如果我使用或我只獲得第一個。 – ghostrider 2012-07-15 17:43:56
驗證選擇了多少個元素 - 如果它們的數目是兩個,那麼問題是由PHP代碼引起的,而不是由看起來正確的XPath表達式引起的。 – 2012-07-15 17:50:49