1

我一直在尝试编写一个 PHP 脚本来使用DOMXPath解析 XML 文档;但是,我似乎遗漏了一些东西,因为我的 XPath 查询都没有返回任何内容。所以我试图淡化我的脚本来尝试解析一个非常基本的 XML 文档,但这也不起作用。我基于这个 XPath 示例编写了这个脚本。

<?php

$xml  = '<?xml version="1.0" encoding="ISO-8859-1"?>';
$xml .= '<bookstore>';
$xml .= '<book category="COOKING">';
$xml .= '<title lang="en">Everyday Italian</title>';
$xml .= '<author>Giada De Laurentiis</author>';
$xml .= '<year>2005</year>';
$xml .= '<price>30.00</price>';
$xml .= '</book>';
$xml .= '</bookstore>';

$dom = new DOMDocument('1.0');
$dom->loadXML($xml);

$xpath = new DOMXPath($dom);
$result = $xpath->query('/bookstore/book[1]/title');
var_dump($result);

?>

问题是我的 $result 的 var_dump总是返回如下内容:

object(DOMNodeList)#4 (0) { }

...表明它什么也没找到。

4

2 回答 2

5

在这种情况下, var_dump() 的输出具有误导性。尝试

foreach($result as $e) {
  echo $e->nodeValue;
}

或者

echo $result->length;

反而。

例如使用您的代码(直到 $result = $xpath....)+

echo phpversion(), "\n";
var_dump($result);
echo $result->length, "\n";
foreach($result as $e) {
  echo $e->nodeValue;
}

输出是

5.3.1
object(DOMNodeList)#4 (0) {
}
1
Everyday Italian
于 2009-12-18T18:28:58.633 回答
0

我一直在努力处理在根节点中指定 xmlns="http://www.w3.org/2005/Atom" 的文档。把它拿出来,xpath 就可以了。

于 2014-01-10T15:43:15.420 回答