2009-12-18 4 views
1

J'ai essayé d'écrire un script PHP pour analyser un document XML en utilisant DOMXPath; Cependant, il semble que quelque chose me manque car aucune de mes requêtes XPath ne retourne quoi que ce soit. J'ai donc essayé d'édulcorer mon script pour essayer d'analyser un document XML très rudimentaire, et cela ne fonctionne pas non plus. J'ai basé ce script sur this XPath example.Pourquoi le DOMXPath ne fonctionne-t-il pas?

<?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); 

?> 

Le problème est que mon var_dump de résultat $ toujours retours quelque chose comme:

object(DOMNodeList)#4 (0) { } 

... indiquant qu'il n'a rien trouvé.

Répondre

5

Dans ce cas, la sortie de var_dump() est trompeuse. Essayez

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

ou

echo $result->length; 

à la place.

par exemple. en utilisant votre code (jusqu'à $ result = XPath $ ....) +

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

la sortie est

5.3.1 
object(DOMNodeList)#4 (0) { 
} 
1 
Everyday Italian 
+0

Oups. Mon erreur supposait que var_dump me montrerait quelque chose. Je vous remercie! – SoaperGEM

0

J'ai eu du mal avec un doc qui spécifie xmlns = "http: // www.w3.org/2005/Atom "dans le nœud racine. Je l'ai sorti, et xpath fonctionne.