【问题标题】:Error extraction XML in PHP在 PHP 中提取 XML 时出错
【发布时间】:2018-08-08 11:41:47
【问题描述】:

我需要从一个 XML 文件中提取两个数据。我正在使用这个脚本:

在 onda 中的 Canzone:

<?php
$estrazioneAPI = new SimpleXMLElement('http://api.radionomy.com/currentsong.cfm?radiouid=0523cc62-e00c-485e-8e65-aea2aa37702a&apikey=b3ec3722-a1e6-44af-9d95-cb97ade2f4dc&callmeback=yes&type=xml&cover=yes&previous=yes.xml', NULL, TRUE);
if(false === $estrazioneAPI)
{
  echo "test";
}
$canzoni = $estrazioneAPI->xpath("//tracks");
if(count($canzoni) > 0) {
    foreach($canzoni as $track) {
        $titolo = $track->track->title;
        $artista = $track->track->artists;
        if($titolo == '' AND $artista == ''){
        echo "Nessuna canzone in onda";
        }else if($titolo == '' AND $artista != ''){
                echo "$artista - Titolo non riconosciuto";
        }else if($titolo != '' AND $artista == ''){
                echo "Artista non riconosciuto - $titolo";
            }else{
                 echo $artista . " - " . $titolo;
            }
    }
}



?>
</marquee></i>

转到我放置此脚本的页面正常工作,问题是我在另一个页面上放置此脚本以每 15 秒更新一次数据:

<script>
$(document).observe('dom:loaded', function() {
  new Ajax.PeriodicalUpdater('canzoneInOnda', '../api_webbo/canzone_in_onda.php', { frequency: 15 });
});
</script>
<div id="canzoneInOnda"></div>

一切都好,只是偶尔会出现这篇文章:

致命错误:未捕获的异常“异常”,消息“字符串无法解析为 XML”

然后在下一次更新时它恢复正常工作...... 我该如何解决?

【问题讨论】:

    标签: php jquery xml


    【解决方案1】:

    这是因为您返回的 XML 无效。您应该使用try-catch 并在发生异常时写入日志。并且,我们不应该使用SimpleXMLElement直接获取url资源。

    <?php
    
    try {
        $url = 'http://api.radionomy.com/currentsong.cfm?radiouid=0523cc62-e00c-485e-8e65-aea2aa37702a&apikey=b3ec3722-a1e6-44af-9d95-cb97ade2f4dc&callmeback=yes&type=xml&cover=yes&previous=yes.xml';
        $ch = curl_init($url);
    
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        $result = curl_exec($ch);
        curl_close($ch);
        $estrazioneAPI = new SimpleXMLElement($result);
        //Bla bla your code...
    
    
    } catch (Throwable $exception) {
        //Write log exception
        //echo $exception->getMessage();
        //var_dump($result);
    }
    

    【讨论】:

      猜你喜欢
      • 2012-07-16
      • 1970-01-01
      • 2014-02-18
      • 2018-12-23
      • 2014-11-26
      • 1970-01-01
      • 2015-12-05
      • 1970-01-01
      • 2015-04-11
      相关资源
      最近更新 更多