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