Récupérer la valeur d une variable dans une balise xml ?
Posté : 31 janv. 2011, 11:13
Bonjour à tous,
j'ai le fichier xml suivant
Je dois stocker les valeurs dans une BDD.
Avec un script php j'arrive a récupérer sans soucis les valeurs contenues entre les balises simple <Name></Name> etc etc, mais je voudrais récupérer aussi les valeurs des variables s1, s2 et s3 qui se trouvent dans la balise <Lap ....>. Et là, je sèche.
Si quelqu'un a une idée...merci
je colle ici le script php qui me sert pour lire puis récupérer les données dans le xml (la fonction n'est pas de moi)
j'ai le fichier xml suivant
Code : Tout sélectionner
<Driver>
<Name>Nom Prenom</Name>
<CarNumber>4</CarNumber>
<TeamName>Ferrari</TeamName>
<isPlayer>0</isPlayer>
<GridPos>13</GridPos>
<Position>13</Position>
<Lap num="1" p="9" et="244.4303" s1="45.9353" s2="24.1838" s3="27.1464" fuel="0.408">97.2655</Lap>
<Lap num="2" p="7" et="341.6958" s1="34.6579" s2="23.2544" s3="27.2179" fuel="0.400">85.1301</Lap>
<Lap num="3" p="7" et="426.8259" s1="32.1466" s2="23.2796" s3="27.7674" fuel="0.392">83.1936</Lap>
<BestLapTime>83.1936</BestLapTime>
<Laps>10</Laps>
<Pitstops>4</Pitstops>
<FinishStatus>Finish Normaly</FinishStatus>
</Driver>
Avec un script php j'arrive a récupérer sans soucis les valeurs contenues entre les balises simple <Name></Name> etc etc, mais je voudrais récupérer aussi les valeurs des variables s1, s2 et s3 qui se trouvent dans la balise <Lap ....>. Et là, je sèche.
Si quelqu'un a une idée...merci
je colle ici le script php qui me sert pour lire puis récupérer les données dans le xml (la fonction n'est pas de moi)
Code : Tout sélectionner
<?php
// Fonction parser
function parser($fichier,$item,$champs) {
// on lit le fichier
if($chaine = @implode("",@file($fichier))) {
// on explode sur <item>
// Dans l'exemple il s'agit de 'profil'
$tmp = preg_split("/<\/?".$item.">/",$chaine);
// pour chaque <item> donc tous les profils
for($i=1;$i<sizeof($tmp)-1;$i+=2)
// on lit les champs demandés <champ> donc il s'agit de 'id' et 'prenom'
foreach($champs as $champ) {
$tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);
// on ajoute l'élément au tableau
$tmp3[$i-1][] = @$tmp2[1];
}
// et on retourne le tableau dans la fonction
return $tmp3;
}
}
$xml = parser("test.xml","Driver",array("Name","TeamName","GridPos","Position","BestLapTime","FinishTime","Laps","FinishStatus"));
foreach ($xml as $key => $row) {
$nom[$key] = $row[0];
$teamnom[$key] = $row[1];
$gridpos[$key] = $row[2];
$position[$key] = $row[3];
$bestlap[$key] = $row[4];
$finishtime[$key] = $row[5];
$laps[$key] = $row[6];
$finishstatus[$key] = $row[7];
}
// Tri par ordre d'arrivée.
array_multisort($position, SORT_ASC, $xml);
// Affichage des données ligne par ligne.
foreach($xml as $row) {
echo $row[3]." ".$row[0]." ".$row[1]." ".$row[2]." ".$row[4]." ".$row[5]." ".$row[6]." ".$row[7]." "."<br/>";
}
?>