DOM选中了所有,如何遍历

时间:2012-07-10 20:36:26

标签: php dom xpath domdocument

我有一张表格,看起来像这样。

<tr> 
  <td><a href="http://www.mysite.com">Link</a></td>
  <td>value 2</td>
  <td>value 3</td>
  <td>value 4</td>
  <td>value 5</td>
</tr>

我正在使用xPath选择所有<tr>并循环遍历它们。

foreach($xpathResult as $item){
  //print the href of the first td
  //print the nodeValue of the second td
  //print the nodeValue of the 3rd td
  //print the nodeValue of the 4th td
  //print the nodeValue of the 5th td
}

如何打印第一个td的href和之后每个td的nodeValue?有firstChildlastChild,但我如何到达中间位置?我可以使用firstChild->nextSiblingfirstChild->nextSibling->nextSibling,但是不是更方便吗?

2 个答案:

答案 0 :(得分:1)

只需在childNodes上使用循环,就像这样:

foreach( $trs as $tr) {
    echo $tr->firstChild->firstChild->attributes->getNamedItem( 'href')->value;
    foreach( $tr->childNodes as $k => $td) {
        if( $k == 0) continue; // Skip the first one
        echo $td->nodeValue . "\n";
    }
}

答案 1 :(得分:0)

为什么不直接选择td?

$results = $dom->xpath('//tr/td');
foreach($results as $td) {
   echo $td->nodeValue;
}