(PHP 5, PHP 7, PHP 8)
DOMXPath::query — Belirtilen XPath ifadesini değerlendirir
$ifade, ?DOMNode $bağlamsal_düğüm = null, bool $kaydet = true): DOMNodeList
Belirtilen XPath ifade'sini çözümler.
ifadeDeğerlendirilecek XPath ifadesi.
bağlamsal_düğümSeçimlik olarak, göreli XPath sorguları yapmak içindir. Öntanımlı olarak sorgular kök elemana göre çözümlenir.
kaydetBağlam düğümünün kapsam içi ad alanı öneklerinin DOMXPath nesnesine otomatik olarak kaydedilip kaydedilmeyeceği. Bu, kapsam dahilindeki her ad alanı için DOMXPath::registerNamespace() öğesini manuel olarak çağırmaya gerek kalmaması için kullanılabilir. Bir ad alanı öneki çakışması olduğunda, yalnızca en yakın soydan gelen ad alanı öneki kaydedilir.
Belirtilen XPath ifade'si ile eşleşen tüm
düğümleri içeren bir DOMNodeList nesnesi döner.
Hiçbir eşleşme olmamışsa boş bir DOMNodeList
nesnesi döner.
ifade bozuksa ya da
bağlamsal_düğüm geçersizse,
DOMXPath::evaluate() false döndürür.
Örnek 1 - Tüm İngilizce kitapları listelemek
<?php
$doc = new DOMDocument;
// Fazladan boşlukları korumak istemiyoruz
$doc->preserveWhiteSpace = false;
$doc->load('book.xml');
$xpath = new DOMXPath($doc);
// Sorguyu kök elemandan başlatıyoruz
$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";
}
?>Yukarıdaki örneğin çıktısı:
Found The Grapes of Wrath, by John Steinbeck Found The Pearl, by John Steinbeck
İfademizi kısaltmak için bağlamsal_düğüm
bağımsız değişkenini kullanabilirdik:
<?php
$doc = new DOMDocument;
$doc->preserveWhiteSpace = false;
$doc->load('book.xml');
$xpath = new DOMXPath($doc);
$tbody = $doc->getElementsByTagName('tbody')->item(0);
// Sorguyu tbody düğümüne göre yapalım
$query = 'row/entry[. = "en"]';
$entries = $xpath->query($query, $tbody);
foreach ($entries as $entry) {
echo "Found {$entry->previousSibling->previousSibling->nodeValue}," .
" by {$entry->previousSibling->nodeValue}\n";
}
?>