Forum und email

DOMXPath->query()

(No version information available, might be only in CVS)

DOMXPath->query() — Evaluates the given XPath expression

說明

DOMXPath
DOMNodeList query ( string $expression [, DOMNode $contextnode ] )

Executes the given XPath expression .

參數

expression

The XPath expression to execute.

contextnode

The optional contextnode can be specified for doing relative XPath queries. By default, the queries are relative to the root element.

Return值

Returns a DOMNodeList containing all nodes matching the given XPath expression . Any expression which do not return nodes will return an empty DOMNodeList.

範例

Example#1 Getting all the english books

<?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 starts 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

We can also use the contextnode parameter to shorten our expression:

<?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";
}
?>