DOMXPath::query()函数是PHP中的一个内置函数,用于评估给定的XPath表达式。
用法:
DOMNodeList DOMXPath::query( string $expression, DOMNode $contextnode, bool $registerNodeNS )
参数:此函数接受上述和以下所述的三个参数:
- $expression:它指定要执行的XPath表达式。
- $contextnode (Optional):它指定用于执行相对XPath查询的可选contextnode。默认情况下,查询是相对于根元素的。
- $registerNodeNS (Optional):它指定了可选的registerNodeNS以禁用上下文节点的自动注册。
返回值:此函数返回一个DOMNodeList,其中包含与给定XPath表达式匹配的所有节点。任何不返回节点的表达式都将返回一个空的DOMNodeList。
下面给出的程序说明了PHP中的DOMXPath::query()函数:
程序1:在此程序中,我们将获取具有名称内容的元素的所有元素值。
<?php
// Create a new DOMDocument instance
$document = new DOMDocument();
// Create a XML
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<root>
<content>
First
</content>
<content>
Second
</content>
<content>
Third
</content>
</root>
XML;
// Load the XML
$document->loadXML($xml);
// Create a new DOMXPath instance
$xpath = new DOMXPath($document);
// Get the root element
$tbody = $document->getElementsByTagName('root')->item(0);
// Get all the element with name content
$query = '//content';
// Execute the query
$entries = $xpath->query($query);
foreach ($entries as $entry) {
echo $entry->nodeValue . "<br>";
}
?>
输出:
First Second Third
程序2:在此程序中,我们将计算所有名称为h1的元素。
<?php
// Create a new DOMDocument instance
$document = new DOMDocument();
// Create a XML
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<root>
<h1>
Hello
</h1>
<h1>
World
</h1>
<h1>
Foo
</h1>
<h1>
Bar
</h1>
</root>
XML;
// Load the XML
$document->loadXML($xml);
// Create a new DOMXPath instance
$xpath = new DOMXPath($document);
// Get the root element
$tbody = $document->getElementsByTagName('root')->item(0);
// Get all the element with name h1
$query = '//h1';
// Execute the query
$entries = $xpath->query($query);
// Count the number of headings
echo count($entries);
?>
输出:
4
参考: https://www.php.net/manual/en/domxpath.query.php
相关用法
- PHP DOMXPath registerPhpFunctions()用法及代码示例
- Node.js urlObject.query用法及代码示例
- PHP Ds\Set add()用法及代码示例
- d3.js d3.hsl()用法及代码示例
- PHP abs()用法及代码示例
注:本文由纯净天空筛选整理自gurrrung大神的英文原创作品 PHP | DOMXPath query() Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。