2012-12-08 5 views
0

Je commence juste avec XPath et suis en train de jouer avec la façon de parcourir correctement les éléments de la table pour trouver les valeurs td dans un tr. J'essaie de ne faire que répéter les valeurs du frère du nœud. Ma table, par exemple:xPath pour obtenir des valeurs à partir de la table

<table class="123"> 
    <tbody> 
     <tr> 
      <td id="myYear">Year</td> 
      <td>2001</td> 
      <td>2002</td> 
      <td>2003</td> 
     </tr> 
     <tr> 
      <td id="myScores">Scores</td> 
      <td>82</td> 
      <td>87</td> 
      <td>94</td> 
     </tr> 
    </tbody> 
</table> 

Mon code php est comme suit:

$dom = new DOMDocument; 
$dom->preserveWhiteSpace = false;  
$dom->loadHTML($content); 
$xpath = new DOMXpath($dom); 

$myYear = $xpath->query('//table[@class="123"]/tbody/tr/td[@id="myYear"]'); 

foreach ($myYear as $year) { 
    echo $year->nodeValue; //returns Year 
    echo "<br>"; 

    $siblings = $year->nextSibling; 

    foreach ($siblings as $value) { 
     echo $value->nodeValue; 
    } 
} 

Dans l'exemple ci-dessus, la sortie est « Année », mais je ne reçois aucune sortie pour les trois valeurs frères et soeurs de "myScores" par exemple 82,87,94.

Merci pour tout conseil.

Répondre

1

Un peu d'auto-apprentissage se passe ici! J'ai simplement utilisé le frère suivant comme:

$myYear = $xpath->query('//table[@class="123"]/tbody/tr/td[@id="myYear"]/following-sibling::*'); 

foreach ($myYear as $year) { 
    echo $year->nodeValue; //returns Year 
    echo "<br>"; 
} 
Questions connexes