首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

DOMXPath::query

(PHP 5, PHP 7)

DOMXPath :: query - 计算给定的XPath表达式

描述

代码语言:javascript
复制
public DOMNodeList DOMXPath::query ( string $expression [, DOMNode $contextnode [, bool $registerNodeNS = true ]] )

执行给定的XPath expression

参数

expression

要执行的XPath表达式。

contextnode

可选项contextnode可以指定用于执行相对XPath查询。默认情况下,查询是相对于根元素的。

registerNodeNS

可选的registerNodeNS可以被指定来禁用上下文节点的自动登记。

返回值

返回包含与给定XPath匹配的所有节点的DOMNodeList expression。任何不返回节点的表达式都会返回一个空的DOMNodeList。

如果expression格式不正确或者contextnode无效,返回DOMXPath :: query()FALSE

更新日志

描述

5.3.3

registerNodeNS参数已添加。

例子

示例#1获取所有英文书籍

代码语言:javascript
复制
<?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";
}
?>

上面的例子将输出:

代码语言:javascript
复制
Found The Grapes of Wrath, by John Steinbeck
Found The Pearl, by John Steinbeck

我们也可以使用contextnode参数来缩短我们的表达式:

代码语言:javascript
复制
<?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";
}
?>

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com