Problème de boucle foreach PHP-XML [Résolu]

10demon10
Messages postés
63
Date d'inscription
vendredi 23 avril 2004
Dernière intervention
28 juin 2012
- 29 déc. 2009 à 19:47 - Dernière réponse : 10demon10
Messages postés
63
Date d'inscription
vendredi 23 avril 2004
Dernière intervention
28 juin 2012
- 30 déc. 2009 à 13:29
Bonjour à tous voici mon petit soucis

j'ai ce code php

<?php
    $fichier = "news.xml";
$dom = new DOMDocument();
if (!$dom->load($fichier)) {
    die('Impossible de charger le fichier XML');
}

$itemList = $dom->getElementsByTagName('xmlfile');

foreach ($itemList as $item) {
    $titre = $item->getElementsByTagName('titre');
    
    if ($titre->length > 0) 
    {
        echo $titre->item(0)->nodeValue;
    } 
    else 
    {
        echo '(sans titre)';
    }
  
    echo '
'."\n";

    $desc = $item->getElementsByTagName('date');
    if ($desc->length > 0) 
    {
        echo ' '.$desc->item(0)->nodeValue.'

'."\n";
    }
    
    $desc = $item->getElementsByTagName('content');
    if ($desc->length > 0) 
    {
        echo ' '.$desc->item(0)->nodeValue.'
'."\n";
    }
    
    $lien = $item->getElementsByTagName('classeur');
    if ($lien->length >0)
    {
        echo ' ['.$lien->item(0)->nodeValue.'  + (photos, docs,&#8230;)]';
    }

    echo '
'."\n";
}    


et un fichier XML de ce genre

<xmlfile>

<titre>mon titre</titre>
<date>01/01/10</date>
<content>mon content</content>
<classeur>les photos ici</classeur>


<titre>mon titre 2</titre>
<date>02/01/10</date>
<content>mon content le retour</content>
<classeur>les photos ici</classeur>

</xmlfile>


et malheureusement quand je charge ma page php il ne m'affiche que la 1er série de balise (mon titre,01/01/10,...) et pas la 2e série (mon titre 2,02/01/10,...). Pourtant il y à bien un "foreach" et je ne vois pas d'ou peut provenir mon érreur ?

si quelqu'un à une suggestion je suis preneur :)
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
neigedhiver
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Dernière intervention
14 janvier 2011
- 30 déc. 2009 à 03:02
3
Merci
Salut,

Le comportement de ton script est tout à fait normal, puisque tu n'as qu'une seule balise <xmlfile>.
La doc l'indique pourtant clairement :
DOMDocument::getElementsByTagName — Cherche tous les éléments qui ont le nom de balise donné


XML est un langage de description de données. Un document XML doit donc (même si ce n'est pas obligatoire dans les spécifications du format) proposer une hiérarchie claire, par exemple :
<xmlfile>
<element id="1">
  <titre>mon titre</titre>
  <date>01/01/10</date>
  <content>mon content</content>
  <classeur>les photos ici</classeur>
</element>
<element id="2"
  <titre>mon titre 2</titre>
  <date>02/01/10</date>
  <content>mon content le retour</content>
  <classeur>les photos ici</classeur>
</element>
</xmlfile>


Le code PHP pour boucler :

$itemList = $dom->getElementsByTagName('element');
foreach ($itemList as $item) {
...
}


--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)

Merci neigedhiver 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de neigedhiver
10demon10
Messages postés
63
Date d'inscription
vendredi 23 avril 2004
Dernière intervention
28 juin 2012
- 30 déc. 2009 à 13:29
0
Merci
tous à fait correcte merci
Commenter la réponse de 10demon10

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.