DOM DOMXPath::query
(PHP 5, PHP 7, PHP 8)
DOMXPath::query — 주어진 XPath 표현식을 평가합니다.
설명
public DOMXPath::query(string $expression
, ?DOMNode $contextNode
= null, bool $registerNodeNS
= true
): mixed
지정된 XPath expression
을 실행합니다.
매개변수
expression
- 실행할 XPath 표현식입니다.
contextNode
- 상대 XPath 쿼리를 수행하기 위해 선택적
contextNode
를 지정할 수 있습니다. 기본적으로 쿼리는 루트 요소를 기준으로 합니다. registerNodeNS
- 선택적
registerNodeNS
를 지정하여 컨텍스트 노드의 자동 등록을 비활성화할 수 있습니다.
반환 값
주어진 XPath 표현식과 일치하는 모든 노드를 포함하는 DOMNodeList를 반환합니다. 노드를 반환하지 않는 expression
은 빈 DOMNodeList를 반환합니다.
expression
의 형식이 잘못되었거나 contextNode
가 유효하지 않은 경우 DOMXPath::query()는 false
를 반환합니다.
Examples
예제 #1 모든 영어 책 얻기
<?php
$doc = new DOMDocument;
// We don't want to bother with white spaces
$doc->preserveWhiteSpace = false;
$doc->load('book.xml');
$xpath = new DOMXPath($doc);
// We start from the root element
$query = '//book/chapter/para/informaltable/tgroup/tbody/row/entry[. = "en"]';
$entries = $xpath->query($query);
foreach ($entries as $entry) {
echo "Found {$entry->previousSibling->previousSibling->nodeValue}," .
" by {$entry->previousSibling->nodeValue}\n";
}
?>
위의 예는 다음을 출력합니다.
Found The Grapes of Wrath, by John Steinbeck Found The Pearl, by John Steinbeck
또한 contextNode
매개변수를 사용하여 표현식을 단축할 수 있습니다.
<?php
$doc = new DOMDocument;
$doc->preserveWhiteSpace = false;
$doc->load('book.xml');
$xpath = new DOMXPath($doc);
$tbody = $doc->getElementsByTagName('tbody')->item(0);
// our query is relative to the tbody node
$query = 'row/entry[. = "en"]';
$entries = $xpath->query($query, $tbody);
foreach ($entries as $entry) {
echo "Found {$entry->previousSibling->previousSibling->nodeValue}," .
" by {$entry->previousSibling->nodeValue}\n";
}
?>
기타
- DOMXPath::evaluate() - 주어진 XPath 표현식을 평가하고 가능한 경우 형식화된 결과를 반환합니다.