BlaBla.cn

PHP: DOMXPath->query() - Manual

BlaBla.cn

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.

返回值

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




DOMXPath->registerNamespace() > <DOMXPath->evaluate()
Last updated: Wed, 19 Mar 2008
 
 
BlaBla.cn

© 2005-2008 BlaBla.cn 版权所有