1

DOMXPathを使用して XML ドキュメントを解析する PHP スクリプトを作成しようとしています。ただし、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 に答える