Toujours au sujet de Dom pour xml!!
Fermé
rose77
-
rose77 -
rose77 -
Bonjour, mon problème persiste lors d'extraction de données xml en Dom pour les insérer dans une base oracle ou mysql quelqu'un peut m'aider?!
Configuration: Windows XP Firefox 2.0.0.11
2 réponses
-
Merci pour ton intervention. Voilà j'ai un doc xml dont je dois extraire des données avec DOM pour les inserer dans unebase de donnée. le doc xml est le 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>
et le doc php:
<?php
//$ora=oci_connect("localhost","3p","");
$fichier = "test.xml";
$dom = new DOMDocument();
$dom->load($fichier);
// test pour voir si le document est conforme à sa DTD
//if(!$dom->Validate( "test.xml" )){
// echo "Validation DTD n'est pas OK\n";
// print_r($error);
//} else {
// echo "Validation OK\n";
$racine=$dom->documentElement;
echo "L'element racine se nomme : ", $racine->nodeName;
//$tab=$dom->getElementsByTagName('PAC');
//echo $enfant->nodeName;
$tab=$racine->childNodes;
//$nb=count($tab);
foreach($tab as $enfant){
$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;}}}}
?>
Lorsque j'exécute le programme il y a un warning à chaque tour du foreach. effectivement le premier foreach renvoie une seule ligne mais je dois prévoir le cas où il y aurait plusieurs enfants. -