권리 요소가 표시되지, 이것은 내 쿼리입니다 :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를 갖고 있어야할까요? – freefaller
네, 하나의 조건 만 살아 있다면 결과를 얻습니다. 또는을 사용하는 경우에만 첫 번째 점점. – ghostrider
몇 개의 요소를 선택했는지 확인하십시오. 숫자가 2 인 경우 문제는 PHP 코드에 의해 발생하고 XPath 표현식이 올바르지 않은 것이 원인입니다. –