跳到下一个循环(XML 在 while 循环内解析)
Skip to next loop (XML parsing inside while loop)
我正在使用以下代码在 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 select 错误(因此找不到 XML 页面)。如果当前循环有这样的问题,如何强制它跳到下一个循环?
在此先感谢您的帮助!
在我的系统上用 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...
它停止循环的原因是因为 returned 无效提要时在 $x->item(0)->getElementsByTagName('title')
上抛出错误,因为语句 $x->item(0)
会 return null
而不是对象。
我正在使用以下代码在 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 select 错误(因此找不到 XML 页面)。如果当前循环有这样的问题,如何强制它跳到下一个循环?
在此先感谢您的帮助!
在我的系统上用 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...
它停止循环的原因是因为 returned 无效提要时在 $x->item(0)->getElementsByTagName('title')
上抛出错误,因为语句 $x->item(0)
会 return null
而不是对象。