DOMXPath::query

(PHP 5, PHP 7)

DOMXPath::query Evaluates the given XPath expression

说锟斤拷

public DOMXPath::query ( string $expression [, DOMNode $contextnode [, bool $registerNodeNS = TRUE ]] ) : DOMNodeList

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.

registerNodeNS

The optional registerNodeNS can be specified to disable automatic registration of the context node.

锟斤拷锟斤拷值

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

If the expression is malformed or the contextnode is invalid, DOMXPath::query() returns FALSE.

锟斤拷锟斤拷锟斤拷志

锟芥本 说锟斤拷
5.3.3 The registerNodeNS parameter was added.

锟斤拷锟斤拷

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::evaluate() - Evaluates the given XPath expression and returns a typed result if possible