XML / Php读取XML,解析,输出

时间:2012-07-15 19:37:31

标签: php xml parsing

我正在尝试从源中提取数据,然后解析3个不同字段的数据:“title”,“link”,“description”,然后输出数据。但是,循环似乎加载了前10篇文章,但随后变成了永不结束的循环。我该如何解决这个问题?

<?php

#Load in File
$xmlUrl ="http://sports.yahoo.com/mlb/rss.xml";
$ConvertToXml = simplexml_load_file($xmlUrl);

# -> Setup XML
$newsStory = $ConvertToXml->channel->item;

# -----> Load News Stories
for($i = 0;i<10; $i++){

    $title=$newsStory[$i]->title;
    //$link=$newsStory[$i]->link;
    $desc=$newsStory[$i]->description;

    echo '<hr>';
    echo 'Title:'.$title.'<br />';
    //echo 'Link:'.$link.'<br />';
    echo 'Description'.$desc.'<br>';
    echo '<hr>';

}

?>

我正在解析的XML: img

3 个答案:

答案 0 :(得分:3)

你在for循环中忘记了一个$。     for($i = 0;$i<10; $i++) { [..] }

答案 1 :(得分:2)

你创造了一个无休止的for循环:

for($i = 0;i<10; $i++){

这是无止境的,因为中间表达始终是真的:

i < 10

它给出:“注意:使用未定义的常量i - 假设'i'”所以它是:

'i' < 10

并且"i"始终小于10,因为它在该运算符上下文中评估为0

将错误报告启用到开发平台的最高级别,以便快速发现这些小错误。

简单的解决方案是添加缺少的$

for ($i = 0; $i < 10; $i++) {
             ^

但实际上在整个脚本的上下文中,您可能希望更喜欢条件退出:

# -> Setup XML
$newsStories = $ConvertToXml->channel->item;

# -----> Load News Stories
foreach ($newsStories as $index => $newsStory) {

    if ($index === 10) break;

    $title = $newsStory->title;
    //$link = $newsStory->link;
    $description = $newsStory->description;

    echo '<hr>';
    echo 'Title:' . $title . '<br />';
    //echo 'Link:' . $link . '<br />';
    echo 'Description' . $description . '<br>';
    echo '<hr>';
}

答案 2 :(得分:1)

它必须是$ i&lt; 10 ..你正在使用i&lt; 10 ..如果您的错误报告处于正确的水平,它最终会给出一个未定义的常量通知