2009-10-17 9 views
0

Je suis en train d'analyser un fichier XML à partir d'une API que j'ai convertie en un DOMDocument en php. Cela est surtout bien, mais un problème que j'ai est quand je fais ceci:DOMDocument parsage (php)

$feeditem->getElementsByTagName('extra'); 

dans le cadre d'un statment forall et extra élément n'existe pas dans l'un des feeditems j'Itère dans l'état forall puis J'ai une erreur

J'ai essayé ceci:

if (!empty($feeditem->getElementsByTagName('extra'))){ 
$extratag = $feeditem->getElementsByTagName('extra'); 
    $extraname = $extratag->item(0)->getAttribute('name'); 
echo $extraname 
    } 

Mais je reçois l'erreur

getAttribute() on a non-object 

Note: Lorsque l'élément 'extra' est contenue dans chaque FeedItem alors le code court parfait. C'est juste quand l'un des éléments de flux ne contient pas un élément 'supplémentaire', je reçois l'erreur.

+0

Désolé je voulais dire comme foreach sur la quatrième ligne il –

+0

Pouvez-vous mettre à jour (modifier) ​​votre message pour refléter le code correct –

Répondre

2

Essayez de ne pas utiliser length propriété de DOMNodeList:

$nodes = $feeditem->getElementsByTagName('extra'); 
if ($nodes->length > 0) { 
    $extraname = $extratag->item(0)->getAttribute('name'); 
} 
+0

vous n'avez pas vraiment besoin de la vérification '> 0', mais cela fera ce que vous voulez. –

+0

MERCI BEAUCOUP !! Été collé dessus depuis hier! Fonctionne! –

+0

@meder vous khow pourquoi parfois je reçois erreur non-objet, mais l'objet existe en XML? http://stackoverflow.com/questions/18096972/how-to-parse-xml-with-php-domdocument-and-be-sure-to-get-objects/18097678?noredirect=1#18097678 – Pooya