A coup sûr je suis sur le bon forum !!!
Je rencontre quelques difficultées pour lire certains éléments d'un fichier XML en php (php4)
Le but est de réupérer les élements de ce fichier xml pour les injecter dans une table mysql.
J'ai récupéré un script sur internet assé simple avec lequel j'arrive sans trop de difficulté a récupérer les premiers élements (1er niveau?)
Pour le reste impossible d'afficher quoique ce soit cela fait deux jours que je suis dessus sans succés, j'ai acheter un bouquin php qui explique assé bien comment récupérer tous les éléments et leurs valeurs seulement sur php5 ...
Ci-dessous un extrait du fichier xml, je souhaiterais récupérer les élements photos de chaque bien ainsi que "ltitre" et "lannonceweb"
-
Code : Tout sélectionner
<bien>
<nbien>1</nbien>
<cagence>demo</cagence>
<cbien>005</cbien>
<mprix>225000</mprix>
<ctyp>ma</ctyp>
<nannee>1875</nannee>
<qsurfterrain>2500</qsurfterrain>
<cetat>+</cetat>
<qchambres>3</qchambres>
<qpieces>6</qpieces>
<qsurfhab>140</qsurfhab>
<qsurfsejour>35</qsurfsejour>
<cregion>3</cregion>
<cenvironnement>cpni</cenvironnement>
<ctypmandat>v</ctypmandat>
<ndisponibilite>1</ndisponibilite>
<lcp>24150</lcp>
<llocalite>BAYAC</llocalite>
<cisopays>FRA</cisopays>
<nnatmandat>2</nnatmandat>
<cnaturebien>res</cnaturebien>
- <lvue>
- <![CDATA[ S
]]>
</lvue>
<qsdb>1</qsdb>
<qsdd>1</qsdd>
<qgarages>1</qgarages>
<nanneerenov>1986</nanneerenov>
- <cchauf>
- <![CDATA[ BF
]]>
</cchauf>
<ntypcuisine>6</ntypcuisine>
<mrevcad>950</mrevcad>
<mcharge />
<mprecimmo>2300</mprecimmo>
<cstyle>CAR</cstyle>
<dcre>12/12/2004</dcre>
<dmod>18/12/2004</dmod>
<qbureau>1</qbureau>
<qsurfterrasse>32</qsurfterrasse>
<qmurmitoy />
<ctypmeta>mai</ctypmeta>
<sfilenamephoto1>1895fr1p129.jpg</sfilenamephoto1>
- <photo>
<nphoto>129</nphoto>
- <lshortdescfr>
- <![CDATA[ Façade
]]>
</lshortdescfr>
<sfilename>1895fr1p129.jpg</sfilename>
<url>http://www.monagence.net/photo/1895fr1p129.jpg</url>
<nangle />
<nordre>1</nordre>
</photo>
- <photo>
<nphoto>2</nphoto>
- <lshortdescfr>
- <![CDATA[ cuisine
]]>
</lshortdescfr>
<sfilename>1895fr1p2.jpg</sfilename>
<url>http://www.monagence.net/photo/1895fr1p2.jpg</url>
<nangle />
<nordre>2</nordre>
</photo>
- <photo>
<nphoto>7</nphoto>
- <lshortdescfr>
- <![CDATA[ Séjour
]]>
</lshortdescfr>
<sfilename>1895fr1p7.jpg</sfilename>
<url>http://www.monagence.net/photo/1895fr1p7.jpg</url>
<nangle />
<nordre>3</nordre>
</photo>
- <photo>
<nphoto>11</nphoto>
- <lshortdescfr>
- <![CDATA[ Chambre
]]>
</lshortdescfr>
<sfilename>1895fr1p11.jpg</sfilename>
<url>http://www.monagence.net/photo/1895fr1p11.jpg</url>
<nangle />
<nordre>4</nordre>
</photo>
- <biendesc>
<clangue>fr</clangue>
- <ltypmeta>
- <![CDATA[ Maison
]]>
</ltypmeta>
- <ltypmetafr>
- <![CDATA[ Maison
]]>
</ltypmetafr>
- <lregion>
- <![CDATA[ Aquitaine
]]>
</lregion>
- <lnaturebien>
- <![CDATA[ Résidentiel
]]>
</lnaturebien>
- <lenvironnement>
- <![CDATA[ Campagne non-isolée
]]>
</lenvironnement>
- <ldisponibilite>
- <![CDATA[ A l'acte
]]>
</ldisponibilite>
- <lstyle>
- <![CDATA[ Caractère
]]>
</lstyle>
- <ltypmandat>
- <![CDATA[ Biens AV
]]>
</ltypmandat>
- <letat>
- <![CDATA[ Bon
]]>
</letat>
- <lchauf>
- <![CDATA[ Bois et Fuel
]]>
</lchauf>
- <ltypcuisine>
- <![CDATA[ Aménagée
]]>
</ltypcuisine>
- <ltyp>
- <![CDATA[ Maison
]]>
</ltyp>
+ <ltitre>
- <![CDATA[ Magnifique maison en pierres apparentes avec parc arboré
]]>
</ltitre>
- <lannonce>
- <![CDATA[ Magnifique maison en pierres apparentes avec parc arboréSéjour de 30 m² avec cheminée en pierre, cuisine aménagée de 22 m², un wc, à l'étage: 3 chbs de 20 m², une mezz , SdB lumineuse, wc, cave, garage, grand parc arboré et cloturé autour la maison de 2 500m², située à proximité d'un charmant petit village
]]>
</lannonce>
+ <lannonceweb>
- <![CDATA[ Un séjour de 30 m² avec cheminée en pierre, une cuisine aménagée de 22 m² avec cheminée (insert), une chaufferie servant de lingerie, un wc, à l'étage: 3 chambres de 20 m², une mezzanine avec poutres apparentes, une salle de bains lumineuse, un wc, une cave, un grand garage, un grand parc arboré et cloturé autour la maison de 2 500m², le tout situé à proximité d'un charmant petit village
]]>
</lannonceweb>
- <lhtml>
- <![CDATA[ <P>Un séjour de 30 m² avec cheminée en pierre, une cuisine aménagée de 22 m² avec cheminée (insert), une chaufferie servant de lingerie, un wc, à l'étage: 3 chambres de 20 m², une mezzanine avec poutres apparentes, une salle de bains lumineuse, un wc, une cave, un grand garage, un grand parc arboré et cloturé autour la maison de 2 500m², le tout situé à proximité d'un charmant petit village</P>
]]>
</lhtml>
- <lascii>
- <![CDATA[ Un séjour de 30 m² avec cheminée en pierre, une cuisine aménagée de 22 m² avec cheminée (insert), une chaufferie servant de lingerie, un wc, à l'étage: 3 chambres de 20 m², une mezzanine avec poutres apparentes, une salle de bains lumineuse, un wc, une cave, un grand garage, un grand parc arboré et cloturé autour la maison de 2 500m², le tout situé à proximité d'un charmant petit village
]]>
</lascii>
</biendesc>
</bien> Le script php utilisé :
Code : Tout sélectionner
function contenu_textuel($noeud_parent)
{
$noeuds = $noeud_parent->child_nodes();
while($noeud = array_shift($noeuds))
{
if ($noeud->node_type() == XML_TEXT_NODE)
{
$resultat = $noeud->node_value();
return $resultat;
}
}
}
function traitement_element($noeud_parent, $nom)
{
$noeuds = $noeud_parent->child_nodes();
while($noeud = array_shift($noeuds))
{
if ($noeud->node_name() == $nom)
{
$resultat = contenu_textuel($noeud);
return $resultat;
}
}
}
function traitement_attribut($noeud_parent, $nom, $attribut)
{
$noeuds = $noeud_parent->child_nodes();
while($noeud = array_shift($noeuds))
{
if ($noeud->node_name() == $nom)
{
$resultat = $noeud->get_attribute($attribut);
return $resultat;
}
}
}
$tab_elements = array("bien","cbien","mprix","ctyp","qpieces","qsurfhab","llocalite","sfilenamephoto1","photo","lcp","cregion","qsurfterrain","ndisponibilite","lannonceweb","ltitre","sfilename","photo");
$xml_doc = domxml_open_file("export.xml")
or die("Impossible d'ouvrir le fichier XML !");
$element_racine = $xml_doc->document_element();
$noeuds_enfants = $element_racine->child_nodes();
foreach($noeuds_enfants as $noeud)
{
if($noeud->node_type() == XML_TEXT_NODE) continue;
for($i = 0; $i < sizeof($tab_elements); $i++)
{
${$tab_elements[$i]} = traitement_element($noeud, $tab_elements[$i]);
}
foreach($tab_attributs as $cle=>$valeur)
{
$$cle = traitement_attribut($noeud, $tab_elements[$valeur], $cle);
}
if($cbien != "")
{
// on récupère les infos principales
echo "Référence du bien : $cbien<br>
Type de bien : $ctyp<br>
Prix : $mprix<br><br>";
}
}Erwann