DOMXPath->query()

(no version information, might be only in CVS)

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

说明

class 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.

返回值

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

范例

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

参见

DOMXPath->evaluate()