📜  PHP | DOMXPath query()函数(1)

📅  最后修改于: 2023-12-03 15:03:36.924000             🧑  作者: Mango

PHP | DOMXPath query()函数

在PHP中,DOMXPath的query()函数被用来在XML或HTML文档中搜索元素或属性。

语法
DOMNodeList DOMXPath::query(string $expression, DOMNode $contextnode = null, bool $registerNodeNS = true)

参数说明:

  • $expression:必须,表示XPath查询表达式。
  • $contextnode:可选,表示表达式的起始位置,默认为文档根节点。
  • $registerNodeNS:可选,如果设置为true(默认值),那么DOMElement上的命名空间前缀将被注册。如果设置为false,那么DOMXPath就只会处理无命名空间的元素。
返回值

如果查询成功,query()函数将返回一个DOMNodeList对象,其中包含了查询结果的所有节点。如果查询失败,则返回一个空的DOMNodeList对象。

示例
// 加载一个XML文件
$xml = <<<EOX
<?xml version="1.0" encoding="UTF-8"?>
<library>
  <book>
    <title>Alice in Wonderland</title>
    <author>Lewis Carroll</author>
  </book>
  <book>
    <title>The Adventures of Tom Sawyer</title>
    <author>Mark Twain</author>
  </book>
</library>
EOX;

$doc = new DOMDocument();
$doc->loadXML($xml);

// 创建一个DOMXPath对象
$xpath = new DOMXPath($doc);

// 查询文档中的所有book元素
$books = $xpath->query("/library/book");

// 遍历查询结果并打印
foreach ($books as $book) {
  $title = $book->getElementsByTagName("title")->item(0)->nodeValue;
  $author = $book->getElementsByTagName("author")->item(0)->nodeValue;
  echo "Title: $title\nAuthor: $author\n\n";
}

输出结果如下:

Title: Alice in Wonderland
Author: Lewis Carroll

Title: The Adventures of Tom Sawyer
Author: Mark Twain

上面的示例查询了一个XML文件,找到了文档中的所有book元素,并打印了每本书的标题和作者。

总结

DOMXPath query()函数是PHP中一个非常有用的函数,可以帮助我们快速地在XML或HTML文档中查找元素或属性。学会使用它,将使我们的程序开发变得更加高效。