2012-12-08 51 views
0

我刚开始使用XPath,并且正在摆弄如何正确遍历表元素以在tr中查找td值。我试图只回显节点的兄弟值。我的表,例如:xPath从表中获取值

<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> 

我的PHP代码如下:

$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; 
    } 
} 

在上面的例子中,输出的是“年”,但我没有得到任何输出为三个兄弟值例如82,87,94的“myScores”。

感谢您的任何建议。

回答

1

一些自学在这里!我简单地使用下面的兄弟姐妹是这样的:

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

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