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 표현식을 평가하고 가능한 경우 형식화된 결과를 반환합니다.