为什么 XPath 找不到标签?

Why XPath can't find tags?

我有 xml 文件和 PHP 脚本来处理这个 XML。为什么脚本找不到标签?为什么 xpath 失败并出现警告:

PHP Warning:  DOMXPath::query(): Invalid predicate in test.php on line 7
PHP Warning:  DOMXPath::query(): Invalid expression in test.php on line 7
PHP Warning:  Invalid argument supplied for foreach() in test.php on line 9

doc.xml

<?xml version="1.0" encoding="UTF-8"?>
<rootTag>
    <div id="tag-id"></div>
    <div id="tag-id"></div>
    <div id="tag-id"></div>
    <div id="tag-id"></div>
    <div id="tag-id"></div>
</rootTag>

test.php

<?php

$doc = new DOMDocument();
$doc->load('./doc.xml');

$xpath = new DOMXPath($doc);
$tags = $xpath->query('//div[@id="tag-id"');

foreach ($tags as $node) {
    print($node->nodeName);
}

?>

嗯,你的查询几乎是正确的。您刚刚忘记输入最后一个结束字符“]”。

应该是:

$tags = $xpath->query('//div[@id="tag-id"]');

改为:

$tags = $xpath->query('//div[@id="tag-id"');