跳到下一个循环(循环中的XML解析)

时间:2016-12-25 11:54:20

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

我正在使用以下代码在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>';

}

问题是,如果$符号选择错误(并且未找到XML页面),它会停止循环。如果当前循环有这样的问题,如何强制它跳到下一个循环?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分: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...

它停止循环的原因是,当返回无效的feed时,$x->item(0)->getElementsByTagName('title')会抛出错误,因为语句$x->item(0)将返回null而不是对象。