SimpleXML仅读取特定数量的子项

时间:2011-08-07 10:12:08

标签: php

我正在使用SimpleXML来读取包含我网站新闻和事件的XML文件。我正在使用foreach来遍历我预定义的xml标签。但是,在我的网站上,我只需要提供三个新闻和事件,这些新闻和事件是我的xml根源的孩子。

<list>
<newsevent>
<date>AUG 7</date>
<description>news</description>
</newsevent>
<newsevent>
<date>AUG 6</date>
<description>news/description>
</newsevent>    
<newsevent>
<date>AUG 5</date>
<description>news</description>
</newsevent>
</list>

我正在使用来自我的php文件的foreach循环

foreach($xml->newsevent as $newsevent)
{
echo "$newsevent->date";
echo "$newsevent->description";
}

XML文件将被视为新闻和事件的数据库,显然会有很多记录。我怎么才能显示特定数量的新事件?

1 个答案:

答案 0 :(得分:0)

你可以添加一些计数器变量,跟踪你循环的次数,并在你循环足够的次数时退出循环:

$counter = 0;
foreach($xml->newsevent as $newsevent)
{
    echo "$newsevent->date";
    echo "$newsevent->description";
    $counter++;
    if ($counter >= 3) {
        break;
    }
}


不过,请注意,使用SimpleXML (与DOMDocument,BTW相同),无论您需要阅读多少项,整个XML文档都将被解析并加载到内存中从它。

如果您的文档非常大,您可能希望防止这种情况发生 - 这意味着不使用DOM解析器,而是使用SAX解析器。

在PHP中,您需要查看XMLReader类。