2010-03-24 5 views
3
$xml = file_get_contents(example.com); 

$dom = new DomDocument(); 
$dom->loadXML($xml); 

$items = $dom->documentElement; 

foreach($items->childNodes as $item) { 
$childs = $item->childNodes; 
foreach($childs as $i) { 
    echo $i->nodeValue . "<br />"; 
} 
} 

Maintenant, je reçois cet avertissement dans tous les 2 foreach:PHP: documentElement-> childNodes avertissement

Warning: Invalid argument supplied for foreach() in file_example.php on line 14 

S'il vous plaît aider les gars. Merci!

+0

Le message d'erreur indique que 'childs' de $ n'est pas un type itérable. Veuillez fournir un court extrait du fichier XML que vous analysez. – Gordon

+0

@Gordon, merci! je suis mauvais à nommer les vars;) –

Répondre

7

Certains nœuds n'ont pas d'enfants, donc vous passez un argument null (invalide) à foreach (comme le dit l'avertissement).

Pour éviter les avertissements, vous devez vérifier si le nœud actuel a des enfants. Pour cela, vous pouvez utiliser la méthode DOMNode::hasChildNodes():

foreach($items->childNodes as $item) { 
    if ($item->hasChildNodes()) { 
     $childs = $item->childNodes; 
     foreach($childs as $i) { 
      echo $i->nodeValue . "<br />"; 
     } 
    } 
} 
Questions connexes