Besoin d'aide en DOM et PHP

rose77 -  
 rose77 -
Bonjour, j'ai un document xml dont je veux extraire les données et les insérer dans une table mysql. Je rédige le programme en php et j'utilise dom pour extraire les données du xml. J'ai des warning à l'exécution des boucles FOREACH quelqu'un s'y connait-il?
A voir également:

11 réponses

pascal.barbier Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   6
 
peux tu donner les exemples de lignes de code qui génèrent les warning ainsi que les messages d'erreur ?
0
rose77 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Merci d'avoir répondu les message d'erreur sont Warning: Invalid argument supplied for foreach() in C:\... à chaque tour des foreach
0
rose77 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
en fait le programme est le suivant:
<?php
$fichier = "test.xml";
$racine=$dom->documentElement;
echo "L'element racine se nomme : ", $racine->nodeName;
$tab=$racine->childNodes;
//$nb=count($tab);
foreach($tab as $enfant){
echo $enfant->nodeName;
$tab1=$enfant->childNodes;
foreach($tab1 as $enfant1){
echo $enfant1->nodeName;
$tab2=$enfant1->childNodes;
foreach($tab2 as $enfant2){
echo $enfant2->nodeName;
$tab3=$enfant2->childNodes;
foreach($tab3 as $enfant3){
echo $enfant3->nodeName;
echo $enfant3->nodeValue;}}}}
?>

pour extraire les données du fichier xml suivant:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE continents SYSTEM "test.dtd">
<POSTE>
<PAC>
<COD type="gfj">75101</COD>
<DAT nom="date fin periode">20051031</DAT>
<GROUPE nom="col" type="coli">0</GROUPE>
<GROUPE nom="env" type="envel">4</GROUPE>
<GROUPE nom="chr" type="chrono">3</GROUPE>
<coli/>
<envel>
<envoi>
<date nom="dat">20051001</date>
<cp nom="cp">78900</cp>
<adre nom="adre">4 rue du tedo</adre>
<ville nom="ville">paris</ville>
</envoi>
<envoi>
<date nom="dat">20051010</date>
<cp nom="cp">15646</cp>
<adre nom="adre">4 av sdgsog</adre>
<ville nom="ville">ducro</ville>
</envoi>
<envoi>
<date nom="dat">20050801</date>
<cp nom="cp">15645</cp>
<adre nom="adre">8 rue de tarb</adre>
<ville nom="ville">tredo</ville>
</envoi>
<envoi>
<date nom="dat">20050601</date>
<cp nom="cp">78900</cp>
<adre nom="adre">8 bd faut</adre>
<ville nom="ville">paris</ville>
</envoi>
</envel>
<chrono>
<envoi>
<date nom="dat">20050701</date>
<cp nom="cp">78900</cp>
<adre nom="adre">6 bd jean</adre>
<ville nom="ville">reins</ville>
</envoi>
<envoi>
<date nom="dat">20050601</date>
<cp nom="cp">78900</cp>
<adre nom="adre">4 rue du tedo</adre>
<ville nom="ville">paris</ville>
</envoi>
<envoi>
<date nom="dat">20050517</date>
<cp nom="cp">54645</cp>
<adre nom="adre">19 bis rue franc</adre>
<ville nom="ville">brazil</ville>
</envoi>
</chrono>
</PAC>
</POSTE>
0
pascal.barbier Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   6
 
ok maintenant on pourrait avoir un bout de code contenant ce foreach pour identifier l'erreur ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rose77 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Oui je viens de l'envoyer
0
pascal.barbier Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   6
 
Oui j'ai vu

Apparament les tableaux de noeud retournés par child nodes sont invalides.
Je n'ai pas de plateforme php avec DOM sous la main pour tester mais je regarderais dès que possible
0
rose77 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
ok je te remercie d'avance
0
pascal.barbier Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   6
 
En relisant le texte de plus près je m'apperçois que l'objet $dom n'a pas été créé et le fichier n'a pas été chargé :

$dom=new DOMDocument;
$dom->load($fichier);

Selon la version de DOMXML il faudra peut être des arguments supplémentaires : voir la doc.

Le reste devrait fonctionner
0
rose77 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
excuse moi j'au coupé le script , j'avais créé le $dom avant:
$fichier = "test.xml";
$dom = new DOMDocument();
$dom->load($fichier);
et il m'affiche bien le bon résultat de la racine à la ligne: echo "L'element racine se nomme : ", $racine->nodeName;
0
rose77 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
désolée mon temps de connexion est fini je me reconnecte demain en espérant que toi aussi. merci pour ton intervention
0
rose77
 
bonjour, y a t-il quelqu'un pour m'aider?
0