2009-11-13 3 views
4

Je suis en train de lire dans un fichier xml pour une raison quelconque a été modélisé dans une structure de table comme ceci:php: structure de la table l'analyse syntaxique avec SimpleXML

<tr id="1"> 
    <td name="Date">10/01/2009</td> 
    <td name="PromoName">Sample Promo Name</td> 
    <td name="PromoCode">Sample Promo Code</td> 
    <td name="PromoLevel" /> 
</tr> 

Ceci est juste une ligne d'échantillon, le fichier a plusieurs blocs <tr> et tout est entouré par <table>. Comment puis-je lire les valeurs, toutes les lignes étant nommées <td>name?

Répondre

4

Vous pouvez utiliser simpleXML avec une expression XPath. Cela vous donnerait toutes les valeurs de nœud TD qui ont un attribut de nom, par ex.

Found 10/01/2009 
Found Sample Promo Name 
Found Sample Promo Code 
Found <nothing cuz PromoLevel is empty> 

Modifier Pour passer à travers toutes les lignes de tableau, vous pouvez faire quelque chose comme ceci:

$rows = $xml->xpath('//tr'); 
foreach($rows as $row) { 
    echo $row['id']; 
    foreach($row->td as $td) { 
     if($td['name']) { 
      echo $td['name'],':',$td,'<br/>',PHP_EOL; 
     } 
    } 
} 

Vous pouvez également jeter un oeil à this article.

Modifier Correction de l'expression XPath, comme suggéré par Josh.