2015-05-05 3 views
1

Обычно я хотел бы использовать XPath чтобы получить таблицу следующим образом:XPATH - снизу вверх

foreach($xpath->query('//*[@id="financial"]/div[4]/table/tr') as $row) { 
    echo '<tr>'; 
     foreach($xpath->query('td[position() > 0]', $row) as $col) { 
     echo '<td>'.trim($col->textContent).'</td>'."\n"; } 
    echo '</tr>'; 

т.д.

Результаты будут отображаться так же, как они находятся в текущей таблице.

Однако, я хотел бы отобразить результаты снизу вверх.

Любые советы?

+1

Не заставляйте нас угадывать, на каком языке вы это пишете. Существует много языков синтаксиса C. – bjimba

+0

В этом примере вы используете выражения xpath на языке программирования, которые вы не отметили в своем вопросе. На любом языке, который вы используете, возьмите возвращаемый список из выражения xpath и отмените его перед тем, как повторить его с помощью 'foreach'. – ewh

+0

PHP. Извини, я виноват. –

ответ

1

Это не по существу вопрос xpath. Вы не можете контролировать порядок элементов, возвращаемых с помощью xpath.

Во всяком случае, DOMXPath::query returns DOMNodeList, и вы можете попробовать перебрать DOMNodeList назад как так:

$rows = $xpath->query('//*[@id="financial"]/div[4]/table/tr'); 
for($i=$rows->length-1; $i>=0; --$i){ 
    $row = $result->item($i); 
    echo '<tr>'; 
    foreach($xpath->query('td', $row) as $col) { 
     echo '<td>'.trim($col->textContent).'</td>'."\n"; 
    } 
    echo '</tr>'; 
} 

Связанные вопрос на будущее посетителей: Reversing order of items in DOMNodeList

Примечание стороны, [position() > 0] бесполезно. xpath position() начинается с 1, поэтому предикат никогда не оценивает false.

+0

Спасибо @ har07 –

Смежные вопросы