【问题标题】:Skip to next loop (XML parsing inside while loop)跳到下一个循环(while 循环内的 XML 解析)
【发布时间】:2016-12-25 11:54:20
【问题描述】:

我正在使用以下代码在 while 循环中解析 RSS 提要:

while($row = mysqli_fetch_array($result)) {

$symbol=$row['joinsymbol'];

$xml=('http://finance.yahoo.com/rss/headline?s=' . $symbol);

$xmlDoc = new DOMDocument();

$xmlDoc->load($xml);

$x=$xmlDoc->getElementsByTagName('item');

  $title=$x->item(0)->getElementsByTagName('title')
  ->item(0)->childNodes->item(0)->nodeValue;
  $link=$x->item(0)->getElementsByTagName('link')
  ->item(0)->childNodes->item(0)->nodeValue;
  $item_desc=$x->item(0)->getElementsByTagName('description')
  ->item(0)->childNodes->item(0)->nodeValue;
  $pubDate=$x->item(0)->getElementsByTagName('pubDate')
  ->item(0)->childNodes->item(0)->nodeValue;

echo 'hello' . '<br>';

}

问题在于,如果 $symbol 选择错误(结果找不到 XML 页面),它会停止循环。如果当前循环出现此类问题,如何强制它跳到下一个循环?

提前感谢您的帮助!

【问题讨论】:

    标签: php parsing web-scraping xml-parsing rss


    【解决方案1】:

    在我的系统上使用 PHP 7.0 和 PHP 7.1 进行了测试,但我不明白为什么它不能在 PHP 5.x 上运行:

    $x = $xmlDoc->getElementsByTagName('item');
    
    if ($x->length < 1) {
        // We found no items, continue to the next iteration
        continue;
    }
    
    // the rest of your script...
    

    它停止循环的原因是,当返回无效的提要时,$x-&gt;item(0)-&gt;getElementsByTagName('title') 上会引发错误,因为语句 $x-&gt;item(0) 将返回 null 而不是对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-24
      • 2012-08-25
      • 1970-01-01
      • 2015-12-28
      • 2022-10-12
      • 2016-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多