如何使用simpleXML和position()循环和显示(n)提要

时间:2010-01-27 10:51:21

标签: php xpath simplexml simpledom

我使用的是simpleXML,我希望循环使用position()方法只显示5个节目,但是让它无法工作

foreach($xml->sortedXPath('TV[position() < 5 and ProgrammeName="MTV"]', 'TransmissionDate', SORT_DESC) as $i => $item)
{

    print "<a href='?v=".$item->ID."&a=false' class='link'>\n";
    print "\t<span class=\"text\">" .trunc($item->ShortSynopsis,25, " "). "</span>\n";
    print "\t</a>";
}

关于如何使这项工作的任何建议

这是我正在使用的XML数据

http://deniselashlley.co.uk/test/data.xml

2 个答案:

答案 0 :(得分:0)

这感觉就像一个转贴,但无论如何......

NiseNise希望对节点进行排序,然后保留前5个。问题是此XPath表达式选择文档中的前5个节点,然后方法对它们进行排序。你需要做的是排序所有节点,然后只处理前5个。

foreach($xml->sortedXPath('TV[ProgrammeName="MTV"]', 'TransmissionDate', SORT_DESC) as $i => $item)
{
    if ($i > 5)
    {
        break;
    }

    print "<a href='?v=".$item->ID."&a=false' class='link'>\n";
    // etc...
}

我忘了提及,sortedXPath()不是SimpleXML的一部分,它是library extending SimpleXML的一部分,因此重新标记。

答案 1 :(得分:0)

您是否认为您的循环将从item[0]开始?因此,$i > 5将输出前6个节点,因为计数将从第0项开始。只需将其更改为$i > 4即可解决您的问题。