php - 在 PHP 中提取 XML 时出错
问题描述
我需要从 XML 文件中提取两个数据。我正在使用这个脚本:
昂达中的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”
然后在下一次更新时它恢复正常工作......我该如何解决?
解决方案
这是因为您返回的 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);
}
推荐阅读
- regex - 正则表达式自动匹配和输出产品名称
- javascript - 如何用图像制作进度条
- java - 如何将JTable中的数据保存到数据库?
- python - pip freeze 不显示包版本
- python - 如何在 Kivy 中删除动态添加的 BoxLayout
- android-fragments - 如何在 TabLayout 中找到由 RecyclerView 打开的对话框的上下文?
- avro - Avro 文件从 Snowflake 表加载和读取
- javascript - 在Vue js中将复选框选择的值分组到数组中
- dart - 如何检查飞镖中的两个地图是否相等
- javascript - 将对象插入数组遇到访问问题(Nodejs)