【问题标题】:Reserved word in XML parsing?XML解析中的保留字?
【发布时间】:2012-07-16 22:41:02
【问题描述】:

我有以下几点:

<?php

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

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

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

    // Source of Article Info-->
    $SrcTitle=$newsStory[$i]->title;
    $SrcLink=$newsStory[$i]->link;

    // Actual News Article Info -->
    $title=$newsStory[$i]->item->title;
    $desc=$newsStory[$i]->item->description;


    echo '<hr>';
    echo '<strong>'.'Title:'.$title.'</strong>'.'(via: <a href=\''.$SrcLink.'\'>'.$SrcTitle.'</a>'.'<br />';
    //echo 'Link:'.$link.'<br />';
    echo 'Description'.$desc.'<br>';
    echo '<hr>';
}

当它应该输出大约 10 个结果时,它只输出 1 个结果......

这一行:$SrcLink=$newsStory[$i]-&gt;link;“链接”字在这里似乎可能是一个“保留”字,因为它在我的编辑器上显示为紫色,如下图所示:

我在这里做错了什么?

【问题讨论】:

  • 它不是保留的,你的编辑只是认为你在调用link()

标签: php xml parsing xml-parsing


【解决方案1】:

不确定为什么您的 IDE 会突出显示紫色,但问题是:

$newsStory = $ConvertToXml->channel;

需要改成:

$newsStory = $ConvertToXml->channel->item;

RSS 提要中的每个条目都在一个 标记中,因此您需要循环访问实际提要条目。

【讨论】:

  • 帮助很大!欣赏它,德鲁!
  • 不客气。本来是要早点添加的,但是channel 数据是特定于提要的信息。因此,您正在打印的 titlelink 是提要标题和提要 URL。除此之外,每个item 都是提要中的一个条目。这就是为什么您之前看到 1 件事被打印出来的原因。
【解决方案2】:

彩色编码经常遇到这个问题。由于该词被用作属性名称(如-&gt; 所示),因此它可以是任何字面意思 - 在这种情况下没有保留字。

我建议var_dump(count($newsStory)) 这样您就可以准确地看到有多少元素需要循环。如果是1,那么您的$newsStory 变量可能有问题 - 您也可以使用var_dump

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    相关资源
    最近更新 更多