gpt4 book ai didi

php - 如何按设定的时间间隔重新解析 XML 文档?

转载 作者:行者123 更新时间:2023-11-30 05:48:50 25 4
gpt4 key购买 nike

我在我客户的网站上建立了一个区域来显示当前正在播放的歌曲,该歌曲是通过 PHP 从 XML 文件解析而来的。但是,我的客户希望歌曲自动刷新,而不必手动刷新页面。

我试过使用 jQuery.get() 和 .ajax() 来解析文件,但由于 XML 文件的结构方式,似乎我只能将艺术家和名字压缩成一个字符串,或者当我尝试具体时,它只返回 [object Object]。

我什至没有尝试解决计算歌曲长度然后根据该长度刷新 Feed 的问题。我可能看不到,因为这对我来说显然是个问题。

任何帮助或一般指导将不胜感激。

示例工作 PHP 代码(显然,非 AJAX):

<?php
$recentlyPlayed = simplexml_load_file('http://publicapi.streamtheworld.com/public/nowplaying?mountName=ABCDFM&numberToFetch=1&eventType=track');
$trackTitle = $recentlyPlayed->{'nowplaying-info'}[0]->property[1];
$trackArtist = $recentlyPlayed->{'nowplaying-info'}[0]->property[0];
echo "<h6>" . $trackArtist . "<span class=\"song-title\">" . $trackTitle . "</span></h6>";
?>

我已经尝试了几种不同的方法来让它工作,但最初的障碍似乎是尝试使用属性而不是节点名称来引用 XML 文件中的数据。这些节点都被命名为相同的,这是区分它们的属性。因此,此代码将正确呈现,除非艺术家/歌曲标题为空,然后它呈现第三个字段,该字段有点神秘地命名为“cue_time_start”。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
<script type="text/javascript">
$(document).ready(function() {
setInterval("songPull()",1000);
});

function songPull() {
$.get(
"http://publicapi.streamtheworld.com/public/nowplaying?mountName=ABCDFM&numberToFetch=1&eventType=track",
"xml",
function(data) {
$(data).find("nowplaying-info").each(function(){
var artist = $(this).find("property").eq(0).text();
var title = $(this).find("property").eq(1).text();
$('body').html("<h1>" + artist + "<small class=\"song-title\">" + title + "</small></h1>");
console.log (artist);
console.log (title);
});
}
);
}
</script>
<body>

</body>

在尝试做这类事情时,我们将不胜感激任何指导、建议或最佳实践示例。

最佳答案

我不确定这是否是您想要的,但您可以简单地使用属性选择器从 XML 文档中提取您想要的数据。

http://jsfiddle.net/P8dc6/

$.get("http://publicapi.streamtheworld.com/public/nowplaying?mountName=KROXFM&numberToFetch=1&eventType=track", 
"xml",
function(data) {
var $nowPlaying = $(data).find('nowplaying-info');
console.log($nowPlaying.find('[name=track_artist_name]').text());
console.log($nowPlaying.find('[name=cue_title]').text());
}
);

此外,永远不要将string传递给setIntervalsetTimeout,您可以直接传递函数引用:

setInterval(songPull ,1000);

关于php - 如何按设定的时间间隔重新解析 XML 文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16115208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com