[RESOLU] parser xml

Petit nouveau ! | 2 Messages

03 déc. 2013, 17:01

bonjour.
je cherche a parser un fichier xml (beerxml) avec simple xml, pour extraire des balises xml le nom des colonnes d'un tableau ( $t_fermentables->getName()) et remplir le dit tableau avec le foreach sur $xml->RECIPE->FERMENTABLES->FERMENTABLE->children()
bizarrement je ne trouve qu'une ligne alors que le fichier xml contient 5 entrées pour <FERMENTABLE>
<?php
echo "
<!doctype html>
<html lang=\"fr\" class=\"article\">
<head>
<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" media=\"all\" />";
$xml = simplexml_load_file('http://www.brew-monkey.com/recipes/beerxml/commoncatbeer.xml');
echo "<h2>FERMENTABLES</h2>
<table>
   <thead> <!-- En-tête du tableau -->
       <tr>";
foreach ( $xml->RECIPE->FERMENTABLES->FERMENTABLE->children() as $t_fermentables
) {
  echo "<th>" . $t_fermentables->getName(). "</th>";
}
echo "
       </tr>
   </thead>";
echo "   <tbody>
       <tr>";
foreach ( $xml->RECIPE->FERMENTABLES->FERMENTABLE->children() as $fermentables) 
{
  echo "<td>" . $fermentables . "</td>";
}
echo "
       </tr>
   </tbody></table>";
?>
Modifié en dernier par northen le 03 déc. 2013, 21:38, modifié 1 fois.

ViPHP
xTG
ViPHP | 7331 Messages

03 déc. 2013, 19:36

Ce sont les fils de FERMENTABLES qu'il te faut dans ce cas et non de FERMENTABLE non ?

Petit nouveau ! | 2 Messages

04 déc. 2013, 11:34

je m'en suis sorti comme ça
<?php
$xml = simplexml_load_file('http://www.brew-monkey.com/recipes/beerxml/commoncatbeer.xml');



# Fermentables
echo "<table><thead><tr>";
foreach ( $xml->RECIPE->FERMENTABLES as $c) {
    $fc = $c->count();
//    echo "$fc fermentables";
}
foreach ( $xml->RECIPE->FERMENTABLES->FERMENTABLE->children() as $t_fermentables) {
  echo "<th>" .$t_fermentables->getName() . "</th>";
}
echo "</tr></thead><tbody>";
$i = 0;
for ($i = 0; $i <= $fc; $i++) {                
echo "<tr>";
foreach ( $xml->RECIPE->FERMENTABLES->FERMENTABLE[$i]->children() as $t_fermentables) {
  echo "<td>" . $t_fermentables . "</td>";
}
echo "</tr>";
}

echo "</tr></tbody></table>";
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 déc. 2013, 12:38

Modération :
Si ta question est résolue, pense à l'indiquer pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.
Tu peux réaliser cette opération toi-même en cliquant sur le bouton vert "Mettre le sujet en tant que Résolu" situé en haut de la page à côté du titre du sujet.
Il en faut peu pour être heureux ......