为什么 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"');
我有 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"');