【问题标题】:xPath - from the bottom to topxPath - 从下到上
【发布时间】:2015-05-05 20:03:23
【问题描述】:

通常,我会使用 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>';

等等

结果将与当前表中显示的结果相同。

但是,我想从下往上显示结果。

有什么建议吗?

【问题讨论】:

  • 别让我们猜你是用什么语言写的。有很多 C 语法语言。
  • 您的示例暗示您正在使用未在问题中标记的编程语言中的 xpath 表达式。无论您使用哪种语言,从 xpath 表达式中获取返回列表并对其进行反向排序,然后再使用 foreach 对其进行迭代。
  • 我去年也遇到过类似的情况。查看我之前的帖子stackoverflow.com/questions/26824157/…

标签: php xpath


【解决方案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() &gt; 0] 没用。 xpath position()1 开始,因此谓词永远不会计算为 false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 2014-08-22
    • 1970-01-01
    相关资源
    最近更新 更多